دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
پارتیشن بندی در پایگاه داده اوراکل
1403/08/30 -
Delegates در سی شارپ
1403/08/29 -
انواع ایندکس در پایگاه داده اوراکل
1403/08/28 -
سربارگذاری متدها در سی شارپ
1403/08/27 -
انواع پیوند ها (join) در پایگاه داده اوراکل
1403/08/26 -
پارامترهای توابع در سی شارپ
1403/08/25
متغیرها در 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، متغیرها باید قبل از استفاده، تعریف شوند.
برای تعریف یک متغیر، از کلمه کلیدی 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 در حال اجرا است، در حافظه نگه داشته میشوند.
بعد از اتمام اجرای بلوک، حافظه مورد استفاده توسط متغیر آزاد میشود.
متغیرهای سراسری تا زمانی که شیء یا پکیج آنها فعال باشد، در حافظه باقی میمانند.
ثابتها (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
در دوره آموزش پایگاه داده اوراکل اصول ، مفاهیم ، طراحی ، پیادهسازی و مدیریت پایگاه داده را به صورت جامع آموزش می دهیم .