منبع اصلی نوشتار زیر در این لینک قرار دارد

آشنایی با PL/SQL – مقدمه ای بر PL/SQL

PL/SQL برگرفته از Procedural Language extension of SQL که ویژگی رویه نویسی (procedural) زبان های برنامه نویسی همراه با SQL را فراهم کرده است. هر برنامه PL/SQL شامل بلاک های PL/SQL است که خود شامل دستور های SQL و PL/SQL می باشد. با PL/SQL امکان تعریف متغیرها، ثابت ها، پروسیجرها و توایع و استفاده از عبارت شرطی و حلقه و همچنین استثناها را مانند زبان های برنامه سازی دارید. هر برنامه PL/SQL شامل یک بلاک مانند زیر است:

DECLARE
Variable declaration
BEGIN
Program Execution
EXCEPTION
Exception handling
;END

بخش های DECLARE و EXCEPTION اختیاری هستند ولی بخشی که میان BEGIN و ;END می آید اجباری است. هر برنامه PL/SQL حتما با BEGIN آغاز و با ;END پایان می یابد که در میان آنها دستور ها و دیگر اجزای بدنه اصلی مانند حلقه FOR و یا عبارت های شرطی با IF قرار می گیرند. اصطلاحا به این بخش، بخش اجرایی یا execution گفته می شود. در بخش DECLARE متغیرها، ثابت ها، رکوردها و Cursor ها تعریف می شوند و برای استفاده و تغییر داده ها در بخش اجرایی استفاده می شوند. تعریف متغیر ها بسیار ساده است. هر خط تعریف متغیرها، ثابت ها و غیره در بخش DECLARE با یک ; پایان می یابد.

;[variable_name datatype [NOT NULL := value

=: علامت مقداردهی به متغیر در PL/SQL است. مقدار دهی کردن و اختصاص NOT NULL در تعریف متغیر ها اختیاری است اما هر متغیر دارای یک نام و یک نوع داده ای از میان انواع داده ای در اوراکل مانند، number, varchar2, date و غیره است. همچنین می توان از کلمه default برای اختصاص یک مقدار پیشفرض به متغیر استفاده کرد. در ادامه چندین نمونه از تعریف متغیر ها آمده است :

DECLARE

;(var1 varchar2(100

;var2 date

;var3 number default 10

;var4 number not null 100

متغیر var4 می تواند تغییر کند ولی چون NOT NULL است پس نمی تواند NULL یا تهی باشد. در صورتی که NOT NULL را استفاده کنید حتمن می بایست مقداری اولیه را در هنگام تعریف به متغیر اختصاص دهید. یا دستور تعریف var5 یک متغیر با مقدار رشته ای را تعریف می کند.

;”dept varchar2(10) NOT NULL := “HR Dept

اگر از =: در تعریف متغیر استفاده کنید، پس شما آنرا در بخش DECLARE مقداردهی کرده اید اما می توانید متغیر را در بخش DECLARE نعریف کنید و سپس آنرا در بخش EXECUTION استفاده و  مقداردهی کنید. البته امکان تغییر مقدار متغیر در بخش اجرایی نیز وجود دارد. توجه کنید که همیشه پیش از استفاده از متغیر حتمن باید آنرا در بخش DECLARE تعریف کرده باشید.

DECLARE

;variable_name:=  value

BEGIN

SELECT column_name

INTO variable_name

FROM table_name

;[WHERE condition]

;END

تعریف بالا واضح است، متغیری تعریف شده (تنها تعریف شده است) و سپس در بخش اجرایی که میان BEGIN و ;END است توسط یک دستور SELECT با مقدار ستونی از یک جدول (و شاید بر اساس شرایط خاصی در جلوی WHERE) مقداردهی شده است. شکل زیر یک نمونه از برنامه PL/SQL را نشان می دهد.

علامت / در پایان بلاک و پس از ;END برای اجرای بلاک استفاده می شود.

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

;var_const constant number := 100

شکل کلی تعریف ثابت ها به صورت زیر می باشد :

;constant_name CONSTANT datatype := VALUE

حوزه یا Scope متغیرهای PL/SQL

امکان تعریف بلاک های تودرتو نیز وجود دارد که یک بلاک بیرونی شامل بلاک درونی خواهد بود. از اینرو متغیری که برای یک بلاک بیرونی قابل دسترسی باشد، برای متغیر درونی نیز قابل دسترسی خواهد بود اما متغیرهای تعریف شده در بلاک درونی برای بلاک بیرونی قابل دسترسی نمی باشند. به طور کلی می توانیم دو حوزه از دسترسی را بر اساس تعریف متغیر ها داشته باشیم :

  • متغیر های محلی : که در یک بلاک درونی تعریف می شوند و برای بلاک بیرونی قابل دسترسی نمی باشند.
  • متغیر های سراسری : که در بلاک بیرونی تعریف می شوند و برای خود بلاکی که در آن تعریف شده اند و برای بلاک درونی قابل دسترسی هستند.

شکل زیر نمونه ای بلاک های تودرتو را نشان می دهد.

 شکل زیر یک مثال ساده از یک برنامه PL/SQL و بلاک آنرا نشان می دهد که متغییری به نام message را که مقدار آن رشته Hello World است را تعریف و سپس توسط پروسیجر DBMS_OUTPUT.PUT_LINE آنرا چاپ می کند.

Comment یا توضیح در PL/SQL

مانند شکل دوم از نماد — برای نوشتن توضیح تک خطی استفاده می کنیم. همچنین برای نوشتن توضیحات چند خطی آنها را میان */ و /* مانند شکل زیر می نویسیم. توضیحات باعث درک بهتر خواننده از تکه کدهای نوشته شده می شود.



برچسب ها : ,