آموزش PL/SQL – قسمت اول مقدمات PL/SQL

همانطور که می دانیم ساختار زبان PL/SQL بر پایه بلاک(BLOCK) است یعنی برنامه های PL/SQL به قسمت هایی از کد به نام بلاک تقسیم بندی می شوند. در ادامه اجزای یک بلاک را توضیح می دهیم.

 

اجزای بلاک در PL/SQL

در PL/SQL هر بلاک از 3 بخش زیر تشکیل می شود:

DECLARATION: این بخش با کلمه کلیدی DECLARE شروع می شود. در این قسمت، متغیرها، زیربرنامه ها و هر عنصر دیگری که قرار است در داخل برنامه استفاده شوند تعریف می شوند. استفاده از DECLARE در بلاک ها، اختیاری است.

–EXECUTABLE COMMANDS: این قسمت بین کلمه کلیدی BEGIN و END قرار می گیرد و شامل دستورات اجرایی آن برنامه می شود. استفاده از این بخش اجباری است ولی می توان بین BEGIN و END از دستور NULL استفاده کرد به این معنی که این بلاک هیچ کاری انجام نمی دهد.

–EXCEPTION HANDLING: این قسمت با کلمه کلیدی EXCEPTION شروع می شود. اگر در حین اجرای برنامه خطایی رخ می دهد، آن برنامه متوقف شده و EXCEPTION HANDLER اجرا می شود. استفاده از این بخش اختیاری است.

نکته: دستورات PL/SQL با یک علامت ; خاتمه می یابد و بلاک های PL/SQL می توانند با استفاده از BEGIN و END درون بلاکهای دیگر استفاده شوند.

ساختار کلی یک بلاک PL/SQL به شکل زیر است:

DECLARE

<declarations section>

BEGIN

<executable command(s)>

EXCEPTION

<exception handling>

END;

مثال: متن ‘HELLO, World!’ را در خروجی نمایش دهید.

DECLARE

message varchar2(20):= ‘Hello, World!’;

BEGIN

dbms_output.put_line(message);

END;

/

توجه داشته باشید که برای اجرای یک بلاک PL/SQL در محیط ابزار SQLPLUS یا در SQL COMMAND LINE باید از علامت / بعد از پایان بلاک استفاده کنیم.

نکته: نام ها یا نشانگرهایی که در PL/SQL استفاده می شوند باید شرطهای زیر را داشته باشند:

با حروف انگلیسی شروع شوند.

کمتر از 30 کاراکتر باشند.

می توان از اعداد ، حروف یا علامت $ ، _ یا # استفاده کرد.

 

DELIMETERها در PL/SQL

DELIMETER یک علامت است که در زبان PL/SQL دارای کاربرد و مفهوم خاص است. در جدول زیر لیستی از DELIMETERهای زبان PL/SQL به همراه توضیح آنها را می بینید.

 

توضیحات برنامه در زبان PL/SQL

در PL/SQL همانند سایر زبان های برنامه نویسی می توانیم توضیحاتی در مورد کد یا اجزای هر بلاک را به کد برنامه اضافه کنیم. این توضیحات می توانند با استفاده از علامت – – در یک خط باشند یا با استفاده از علامت های /* و */ به صورت چند خطی نوشته شوند. این قسمت ها در زمان اجرای دستورات، نادید گرفته می شوند.

مثال:

DECLARE

– – variable declaration

message varchar2(20):= ‘Hello, World!’;

BEGIN

/*

 * PL/SQL executable statement(s)

 */

dbms_output.put_line(message);

END;

/

نکته: هر کدام از موارد زیر را یک واحد PL/SQL یا PL/SQL UNIT می نامند:

PL/SQL block –  Function  – Package – Package body – Procedure – Trigger – Type – Type body

 

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

برای متغیرها، CONSTANTها یا پارامترهای استفاده شده در برنامه های PL/SQL می بایست یک نوع داده مناسب تعریف کرد تا فرمت صحیح برای ذخیره سازی داده و محدوده آنها مشخص نمود. این نوع داده ها معمولا به صورت SCALAR یا LOB هستند که آنها را در ادامه معرفی می کنیم.

نوع داده های SCALAR، مقدارهای واحد هستند که انواع آنها را در جدول زیر مشاهده می کنید.

نکته: نوع داده های جدول بالا دارای تعدادی زیرمجموعه هستند. به عنوان مثال نوع داده عددی دارای زیر مجموعه های INTEGER ، FLOAT و … است. هر کدام از این زیرمجموعه ها دارای محدوده و فرمت نمایش متفاوت هستند. همچنین اگر از بلاک های PL/SQL در زبان های دیگر مثلا JAVA استفاده شود می بایست از نوع داده سازگار با آن زبان استفاده گردد.

زیر مجموعه های نوع داده عددی را  در این جدول مشاهده می کنید.

مثال:

DECLARE

num1 INTEGER;

num2 REAL;

num3 DOUBLE PRECISION;

BEGIN

null;

END;

/

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

نوع داده BOOLEAN مقدارهای منطقی TRUE و FALSE و NULL را ذخیره می کند. این مقدارها می توانند در عملیات منطقی استفاده شوند.

نکته: از آنجایی که زبان SQL نوع داده BOOLEAN ندارد بنابراین مقدارهای BOOLEAN نمی توانند در دستورات یا توابع SQL استفاده شوند.

نکته: نوع داده تاریخی شامل قرن، سال، ماه، روز، ساعت و دقیقه و ثانیه می شود که می توان آنها را با فرمت مناسب نمایش داد. در دیتابیس اوراکل فرمت پیش فرض تاریخ، توسط پارامتر NLS_DATE_FORMAT تنظیم می شود.

نکته: نوع داده های LOB یا LARGE OBJECT مربوط به داده های از نوع تصویر، فیلم، صدا یا متن می شود. در جدول زیر انواع LOB های PL/SQL را می بینید.

نکته: می توان برای هرکدام از نوع داده های تعریف شده در زبان PL/SQL یک زیرمجموعه تعریف کرد که فقط محدوده خاصی از نوع داده اصلی را شامل شود.

مثال: دو نمونه از نوع داده های تعریف شده در PL/SQL که زیرمجموعه ای از نوع داده های دیگر هستند.

SUBTYPE CHARACTER IS CHAR;

SUBTYPE INTEGER IS NUMBER(38,0);

مثال: یک نوع داده 20 کاراکتری به نام name و یک نوع داده 100 کاراکتری به نام message تعریف کنید.

DECLARE

SUBTYPE name IS char(20);

SUBTYPE message IS varchar2(100);

salutation name;

greetings message;

BEGIN

salutation := ‘Reader ‘;

greetings := ‘Welcome to the World of PL/SQL’;

dbms_output.put_line(‘Hello ‘ || salutation || greetings);

END;

/

نکته: مقدارهای NULL در PL/SQL جزو هیچ کدام از نوع داده ها نیستند بلکه بیانگ داده ی نامفهوم یا تعریف نشده هستند. بنابراین مقدار NULL برابر با هیچ مقدار دیگری حتی از نوع NULL نیست.

 

Comments (2)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.