عرض سلام و وقت بخیر خدمت کاربران عزیز سایت محترم پی وی لرن و تمام علاقه مندانی که دوره کامل آموزش PL/SQL را دنبال می کنند. در این پست آموزشی، ما درمورد متغیرها در Pl / SQL بحث خواهیم کرد. یک متغیر Pl / SQL چیزی جز یک نام داده شده به یک منطقه ذخیره سازی است که برنامه های ما می توانند دستکاری کنند. هر متغیر در PL / SQL یک نوع داده خاص دارد که اندازه و طرح حافظه متغیر را تعیین می کند. محدوده ای از مقادیری که می توانند در آن حافظه ذخیره شوند و مجموعه ای از عملیات هایی که می توانند به متغیر اعمال شوند.
نام یک متغیر در PL / SQL شامل عبارتی است که به صورت اختیاری به دنبال حروف، اعداد، کاراکتر$، زیر خط دار می آید و نباید بیش از ۳۰ کاراکتر باشد. به طور پیش فرض، نام متغیر حساس به بزرگی یا کوچکی حروف نیست. همچنین شما نمی توانید یک کلمه کلیدی رزرو شده در PL / SQL به عنوان نام متغیر استفاده کنید.
متغیرهای PL / SQL باید در بخش اعلام یا در یک بسته به عنوان یک متغیر عمومی اعلام شوند.
وقتی یک متغیر را اعلام می کنید، PL / SQL حافظه را برای مقدار متغیر اختصاص می دهد و محل ذخیره سازی توسط نام متغیر شناسایی می شود.
نحو اعلام متغیر است –
1 | variable_name [CONSTANT] datatype [NOT NULL] [:= | DEFAULT initial_value] |
متغیر نام یک شناسه معتبر در PL / SQL است، نوع داده باید نوع داده معتبر PL / SQL یا هر نوع نوع داده تعریف شده کاربر است که
ما در حال حاضر در فصل گذشته بحث کرده ایم.
برخی از اعلامیه های متغیر معتبر همراه با تعریف آنها در زیر نشان داده شده اند.
1 2 3 4 | sales number(10, 2); pi CONSTANT double precision := 3.1415; name varchar2(25); address varchar2(100); |
هنگامی که یک اندازه، مقیاس یا دقت را با نوع داده ارائه می کنید، آن را یک اعلامیه محدود فراخوانی می کنید، اعلامیه های محدود شده نیاز به حافظه کمتر از اعلامیه های بدون محدودیت دارند.
به عنوان مثال:
1 2 3 | sales number(10, 2); name varchar2(25); address varchar2(100); |
هر بار که یک متغیر را اعلام می کنید، PL / SQL یک مقدار پیش فرض NULL را تعیین می کند.
اگر می خواهید یک متغیر را با مقدار دیگری غیر از مقدار NULL مقداردهی کنید، می توانید این کار را در طول اعلان، با استفاده از یکی از موارد زیر انجام دهید:
به عنوان مثال:
1 2 | counter binary_integer := 0; greetings varchar2(20) DEFAULT 'Have a Good Day'; |
شما همچنین می توانید مشخص کنید که یک متغیر نباید یک مقدار NULL با استفاده از محدودیت NOT NULL داشته باشد.
اگر از نوع NULL استفاده می کنید، باید صریحا یک مقدار اولیه را برای آن متغیر اختصاص دهید.
این یک روش برنامه نویسی خوب است که متغیرها را به درستی در بخش مربوطه تعریف کنید
در غیر این صورت، گاهی برنامه ها نتایج غیر منتظره ای تولید می کنند.
مثال زیر را امتحان کنید که از انواع مختلف متغیرها استفاده می کند.
1 2 3 4 5 6 7 8 9 10 11 12 | DECLARE a integer := 10; b integer := 20; c integer; f real; BEGIN c := a + b; dbms_output.put_line('Value of c: ' || c); f := 70.0/3.0; dbms_output.put_line('Value of f: ' || f); END; / |
وقتی کد بالا اجرا می شود، نتیجه ی زیر را تولید می کند:
1 2 3 4 | Value of c: 30 Value of f: 23.333333333333333333 PL/SQL procedure successfully completed. |
PL / SQL اجازه می دهد تا لایه های بلوک، یعنی هر بلوک برنامه ممکن است یک بلوک درونی دیگر داشته باشد.
اگر یک متغیر در داخل یک بلوک داخلی اعلام شود، به بلوک بیرونی دسترسی پیدا نمی کند.
با این حال، اگر یک متغیر اعلام شده و در دسترس برای یک بلوک بیرونی باشد، آن نیز برای تمام بلوک های درونی توزیع در دسترس است. دو نوع دامنه متغیر وجود دارد.
استفاده از متغیرهای محلی و جهانی در فرم ساده آن در مثال زیر نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | DECLARE -- Global variables num1 number := 95; num2 number := 85; BEGIN dbms_output.put_line('Outer Variable num1: ' || num1); dbms_output.put_line('Outer Variable num2: ' || num2); DECLARE -- Local variables num1 number := 195; num2 number := 185; BEGIN dbms_output.put_line('Inner Variable num1: ' || num1); dbms_output.put_line('Inner Variable num2: ' || num2); END; END; / |
وقتی کد بالا اجرا می شود، نتیجه ی زیر را تولید می کند:
1 2 3 4 5 6 | Outer Variable num1: 95 Outer Variable num2: 85 Inner Variable num1: 195 Inner Variable num2: 185 PL/SQL procedure successfully completed. |
شما می توانید از SELECT INTO statement SQL برای اختصاص مقادیر به متغیرهای PL / SQL استفاده کنید.
برای هر آیتم در لیست SELECT، یک متغیر متناظر با نوع نوع در لیست INTO وجود دارد.
مثال زیر این مفهوم را نشان می دهد. اجازه دهید یک جدول را به نام CUSTOMERS ایجاد کنیم.
(برای آشنایی کامل با دستورات SQL، لطفا به آموزش SQL مراجعه کنید)
1 2 3 4 5 6 7 8 9 10 | CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) ); Table Created |
اجازه دهید اکنون مقادیری را در جدول وارد کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'kaushik', 23, 'Kota', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Komal', 22, 'MP', 4500.00 ); |
برنامه زیر ارزش ها را از جدول بالا به متغیرها در Pl / SQL با استفاده از عبارت SELECT INTO SQL وارد می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 | DECLARE c_id customers.id%type := 1; c_name customers.name%type; c_addr customers.address%type; c_sal customers.salary%type; BEGIN SELECT name, address, salary INTO c_name, c_addr, c_sal FROM customers WHERE id = c_id; dbms_output.put_line ('Customer ' ||c_name || ' from ' || c_addr || ' earns ' || c_sal); END; / |
وقتی کد بالا اجرا می شود، نتیجه ی زیر را تولید می کند:
1 2 3 | Customer Ramesh from Ahmedabad earns 2000 PL/SQL procedure completed successfully |
زبان برنامه نویسی PL / SQL اجازه می دهد تا انواع مختلفی از متغیر Pl / SQL را تعریف کند، مانند انواع تاریخ داده زمان، سوابق، مجموعه ها و غیره که ما در پست های آموزشی بعدی آن را پوشش خواهیم داد. برای این جلسه، ما فقط انواع متغیر Pl / SQL های اصلی را مطالعه کردیم.