متغیرها در PL/SQL

زهیر صفری 1403/07/22 0 19
لینک کوتاه https://zoheirsoftware.com/z/0942db2 |
 انواع داده‌ها در PL/SQL,تعریف و مقداردهی متغیرها,متغیرها در PL/SQL

مقدمه  متغیرها در PL/SQL

PL/SQL یک زبان برنامه‌نویسی رویه‌ای توسعه یافته توسط شرکت اوراکل است که به طور خاص برای کار با پایگاه داده اوراکل طراحی شده است.

این زبان امکانات بسیاری را برای مدیریت داده‌ها، خودکارسازی عملیات و توسعه برنامه‌های کاربردی ارائه می‌دهد.

یکی از مهم‌ترین ویژگی‌های PL/SQL، امکان تعریف و استفاده از متغیرها برای ذخیره و پردازش داده‌ها است.

متغیرها در PL/SQL به برنامه‌نویسان این امکان را می‌دهند که داده‌های موقتی را در طول اجرای بلوک‌های برنامه مدیریت کرده و از آن‌ها در دستورات مختلف استفاده کنند.

متغیرها در PL/SQL به عنوان فضاهای حافظه‌ای موقتی تعریف می‌شوند که می‌توانند برای ذخیره مقادیر مختلف مانند اعداد، رشته‌ها، تاریخ‌ها، و سایر انواع داده‌ها استفاده شوند.

در طول اجرای یک بلوک PL/SQL، متغیرها می‌توانند تغییر کنند و به عنوان پارامترهای ورودی و خروجی در توابع و رویه‌ها به کار روند.

در این مقاله، به بررسی متغیرها در PL/SQL، انواع آن‌ها، نحوه تعریف و استفاده از آن‌ها، و کاربردهای عملی خواهیم پرداخت.

همچنین به مفاهیم مرتبط با مدیریت حافظه، دامنه و عمر متغیرها نیز اشاره خواهد شد.

مقدمه متغیرها در PL/SQL

 انواع داده‌ها در PL/SQL

PL/SQL از مجموعه‌ای گسترده از انواع داده‌ها پشتیبانی می‌کند که به برنامه‌نویسان اجازه می‌دهد تا متغیرهایی با انواع مختلف داده را تعریف کنند.

این انواع داده به دو دسته اصلی تقسیم می‌شوند:

  • انواع داده‌های اولیه (Scalar Data Types)

    این دسته شامل انواع داده‌هایی است که فقط یک مقدار را در خود ذخیره می‌کنند. مهم‌ترین انواع داده‌های اولیه در PL/SQL شامل موارد زیر هستند:
    • NUMBER

      برای ذخیره‌سازی اعداد صحیح و اعشاری. به عنوان مثال:
DECLARE
  num1 NUMBER := 100;
  num2 NUMBER(5, 2) := 123.45;  -- عدد با 5 رقم و 2 رقم اعشار
BEGIN
  DBMS_OUTPUT.PUT_LINE(num1);
  DBMS_OUTPUT.PUT_LINE(num2);
END;

 

    • VARCHAR2

      برای ذخیره‌سازی رشته‌های متنی با طول متغیر. به عنوان مثال:
DECLARE
  name VARCHAR2(50) := 'Oracle PL/SQL';
BEGIN
  DBMS_OUTPUT.PUT_LINE('Hello, ' || name);
END;

 

    • CHAR

      برای ذخیره‌سازی رشته‌های ثابت طول. به عنوان مثال:
DECLARE
  fixed_str CHAR(10) := 'Hello';
BEGIN
  DBMS_OUTPUT.PUT_LINE(fixed_str);
END;

 

    • DATE

      برای ذخیره‌سازی تاریخ و زمان. به عنوان مثال:
DECLARE
  hire_date DATE := SYSDATE;
BEGIN
  DBMS_OUTPUT.PUT_LINE('Hire date: ' || hire_date);
END;

 

    • BOOLEAN

      برای ذخیره‌سازی مقادیر منطقی (TRUE، FALSE یا NULL). به عنوان مثال:

 

DECLARE
  is_valid BOOLEAN := TRUE;
BEGIN
  IF is_valid THEN
    DBMS_OUTPUT.PUT_LINE('Valid');
  ELSE
    DBMS_OUTPUT.PUT_LINE('Invalid');
  END IF;
END;

 

  •  انواع داده‌های ترکیبی (Composite Data Types)

    این دسته شامل متغیرهایی است که می‌توانند مجموعه‌ای از مقادیر را در خود ذخیره کنند، مانند آرایه‌ها و رکوردها.
    برخی از مهم‌ترین انواع داده‌های ترکیبی عبارتند از:
    • Records

      رکوردها مجموعه‌ای از مقادیر هستند که می‌توانند انواع مختلف داده‌ها را در خود نگهدارند. به عنوان مثال:
DECLARE
  TYPE EmployeeRec IS RECORD (
    emp_id NUMBER,
    emp_name VARCHAR2(50),
    hire_date DATE
  );
  emp EmployeeRec;
BEGIN
  emp.emp_id := 101;
  emp.emp_name := 'John Doe';
  emp.hire_date := SYSDATE;
  DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp.emp_name);
END;

 

    • Collections

      انواع داده‌هایی مانند آرایه‌ها که می‌توانند چندین مقدار از یک نوع خاص را ذخیره کنند.
      PL/SQL سه نوع اصلی از Collections را ارائه می‌دهد: VARRAY، Nested Tables و Associative Arrays.

به عنوان مثال، برای تعریف یک Associative Array (آرایه انجمنی):

 

DECLARE
  TYPE NumArray IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
  arr NumArray;
BEGIN
  arr(1) := 10;
  arr(2) := 20;
  DBMS_OUTPUT.PUT_LINE('First Element: ' || arr(1));
END;

 

 انواع داده‌ها در PL/SQL


تعریف و مقداردهی متغیرها

در PL/SQL، متغیرها باید قبل از استفاده، تعریف شوند.

برای تعریف یک متغیر، از کلمه کلیدی DECLARE استفاده می‌شود.

متغیرها می‌توانند به طور مستقیم مقداردهی اولیه شوند یا اینکه بعداً در طول برنامه به آن‌ها مقدار داده شود.

  • نحوه تعریف متغیرها

برای تعریف یک متغیر، باید نام متغیر و نوع داده آن مشخص شود. به عنوان مثال:

DECLARE
  employee_id NUMBER;
  employee_name VARCHAR2(50);
BEGIN
  -- بلوک BEGIN برای اجرای دستورات
END;
  • مقداردهی به متغیرها

مقداردهی اولیه به متغیرها می‌تواند در زمان تعریف آن‌ها صورت گیرد یا بعد از آن در داخل بلوک BEGIN مقداردهی شود.

برای مقداردهی اولیه در هنگام تعریف، از عملگر تخصیص := استفاده می‌شود:

 

DECLARE
  employee_id NUMBER := 101;
  employee_name VARCHAR2(50) := 'John Doe';
BEGIN
  DBMS_OUTPUT.PUT_LINE('Employee ID: ' || employee_id);
END;


همچنین می‌توان بعد از تعریف متغیرها در داخل بلوک BEGIN به آن‌ها مقدار داد:

 

DECLARE
  employee_id NUMBER;
  employee_name VARCHAR2(50);
BEGIN
  employee_id := 101;
  employee_name := 'John Doe';
  DBMS_OUTPUT.PUT_LINE('Employee: ' || employee_name);
END;


دامنه (Scope) و طول عمر (Lifetime) متغیرها

متغیرها در PL/SQL دارای دامنه (Scope) و طول عمر (Lifetime) مشخصی هستند.

دامنه یک متغیر به محدوده‌ای از کد اشاره دارد که در آن متغیر قابل دسترسی و استفاده است.

طول عمر نیز مدت زمانی است که متغیر در حافظه باقی می‌ماند.

  • انواع دامنه متغیرها در PL/SQL

دامنه متغیرها به دو دسته کلی تقسیم می‌شود:

    •  متغیرهای محلی (Local Variables)

      متغیرهای محلی داخل بلوک‌های PL/SQL تعریف می‌شوند و تنها در همان بلوک قابل دسترسی هستند. این متغیرها پس از خروج از بلوک حافظه خود را آزاد می‌کنند.
    • متغیرهای سراسری (Global Variables)

      متغیرهای سراسری در سطح پکیج‌ها یا توابع و رویه‌ها تعریف می‌شوند و در تمام بخش‌های آن پکیج یا برنامه قابل دسترسی هستند.


انواع دامنه متغیرها در PL/SQL

  •  طول عمر متغیرها

طول عمر یک متغیر به مدت زمانی اشاره دارد که متغیر در حافظه باقی می‌ماند.

متغیرهای محلی تنها تا زمانی که بلوک PL/SQL در حال اجرا است، در حافظه نگه داشته می‌شوند.

بعد از اتمام اجرای بلوک، حافظه مورد استفاده توسط متغیر آزاد می‌شود.

متغیرهای سراسری تا زمانی که شیء یا پکیج آن‌ها فعال باشد، در حافظه باقی می‌مانند.

 

ثابت‌ها (Constants) در PL/SQL

علاوه بر متغیرها، PL/SQL از ثابت‌ها (Constants) نیز پشتیبانی می‌کند.

ثابت‌ها مشابه متغیرها هستند با این تفاوت که مقدار آن‌ها بعد از تعریف قابل تغییر نیست.

ثابت‌ها با استفاده از کلمه کلیدی CONSTANT تعریف می‌شوند.

به عنوان مثال:

DECLARE
  pi CONSTANT NUMBER := 3.14159;
BEGIN
  DBMS_OUTPUT.PUT_LINE('Value of Pi: ' || pi);
END;


انواع پیشرفته متغیرها در PL/SQL

علاوه بر انواع داده‌های اولیه، PL/SQL امکان استفاده از انواع پیشرفته‌تری از متغیرها را نیز فراهم می‌کند.

این شامل استفاده از کاربرگ‌های مرجع (REF Cursors)، کار با داده‌های LOB (Large Object)، و استفاده از انواع شیء (Object Types) است.

REF Cursors نوع خاصی از متغیرها هستند که برای نگهداری نتایج حاصل از پرس‌وجوها در PL/SQL استفاده می‌شوند.

این متغیرها به‌ویژه زمانی مفید هستند که بخواهید نتایج یک پرس‌وجو را به‌صورت دینامیک و در زمان اجرا پردازش کنید.

به عنوان مثال:

DECLARE
  TYPE ref_cursor IS REF CURSOR;
  emp_cursor ref_cursor;
  emp_record employees%ROWTYPE;
BEGIN
  OPEN emp_cursor FOR SELECT * FROM employees WHERE department_id = 10;
  LOOP
    FETCH emp_cursor INTO emp_record;
    EXIT WHEN emp_cursor%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_record.first_name);
  END LOOP;
  CLOSE emp_cursor;
END;

 

 

 

دوره های مرتبط
پکیج آموزش اوراکل,دوره آموزش پروژه محور پایگاه داده اوراکل,آموزش پایگاه داده اوراکل Oracle ,پایگاه داده اوراکل

اموزش پایگاه داده اوراکل Oracle

در دوره آموزش پایگاه داده اوراکل اصول ، مفاهیم ، طراحی ، پیاده‌سازی و مدیریت پایگاه داده را به صورت جامع آموزش می دهیم .

700,000 تومان

2.2k بازدید
مشاهده

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.