پی‌ال/اس‌کیوال

زبان **PL/SQL** محصول شرکت اوراکل است که برای SQL و ارتباط بین دیتا بیس ساخته شد.

PL/SQL سینتکسی مشابه با زبان‌های Ada,Pascal دارد.

PL/SQL یکی از سه زبان برنامه‌نویسی ای است که در پایگاه داده اوراکل (Oracle Database) به همراه SQL و جاوا (Java) وجود دارد.

این زبان از نسخه ۷ پایگاه داده اوراکل در ان قرار گرفته شده‌است.

این زبان ساختارهایی مانند متغیر، عبارات شرطی، حلقه‌های تکرار وساختارهای استثنا را دارا می‌باشد. همچنین از ساختار ارائه نیز پشتیبانی می‌کند.

هنگامی که یک برنامه در پایگاه داده ذخیره می‌شود امکان اجرای آن در زمان‌های بعدی فراهم می‌شود.

در حالی که برنامه نویسان به راحتی می‌تواند جاسازی زبان دستکاری داده‌ها را انجام دهند اظهارات به‌طور مستقیم به کد PL / SQL با استفاده از اظهارات صریح زبان SQL نیاز به تعریف داده‌های پیچیده‌تر «پویا» در PL / SQL است با این حال، اظهارات DML زیر بنای اکثر کدهای PL / SQL را در برنامه‌های کاربردی فراهم می‌کند.

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

## بخش برنامه‌ای PL/SQL
### قالب‌های ناشناس
بخش برنامه می‌تواند قالب‌ها را نام‌گذاری کند یا نکند. قالب‌های نام‌گذاری نشده به عنوان قالب‌های ناشناس شناخته می‌شوند زیرا آن‌ها در پایگاه داده ذخیره نمی‌شوند پس هیچ نامی نخواهند داشت. ما معمولاً از قالب‌های نا آشنا هنگام ساخت اسکریپت‌هایی برای داده‌هایی که می‌خواهیم یک بار فعال شوند استفاده می‌کنیم. این روش وقتی مؤثر است که ما می‌خواهیم فعالیت یک بخش را به بخش دیگر منتقل کنیم.

Exceptions خطاهایی که در مرحله اجرای کد ایجاد می‌شوند دارای یکی از دو مدل زیر هستند:

Exceptionsهایی که توسط کاربر ایجاد می‌شوند همیشه یه صورت صریح توسط یرنامه‌نویس ایجاد می‌شوند، با استفاده از کامندهای RAISE و RAISE_APPLICATION_ERRO در مواقعی که ما به‌طور قطع می‌دانیم که راه معمولی ای برای ادامه اجرا وجود ندارد.

RAISE کامندی مانند زیر دارد:


```plsql
RAISE <exception name>;
```


شرکت اوراکل چند استثنا از پیش تعریف شده مانند NO_DATA_FOUND ,TOO_MANY_ROWS، دارد. هر استثناء شماره خطا در SQL و پیام خطا مرتبط با آن را دارد. برنامه نویسان می‌توانند با استفاده از SQLCODE و SQLERRM به نابع هر کدام دسترسی داشته باشد.


```plsql
declare
  number1 number(2);
  number2 number1%type    := 17;             -- value default
  text1   varchar2(12) := 'Hello world';
  text2   date         := SYSDATE;        -- current date and time
begin
  SELECT street_number
    INTO number1
    FROM address
   WHERE name = 'INU';
end;
```


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

در این زبان سه نوع مختلف از پارامترها وجود دارد: in ,out in out
# پارامتر IN فقط برای ورودی به کار می‌رود.
# پارامتر OUT برای مقدار دهی به پارامترهای NULL به کار می‌رود.
# پارامتر IN OUT می‌تواند برای مقدار دهی مقادیر استفاده شود.

### رویه‌ها
رویه‌ها مشابه توابع هستند که می‌توانند برای انجام کار اجرا شوند. تفاوت اصلی رویه‌ها با توابع این است که رویه‌ها نمی‌توانند در جملات SQL استفاده شوند. تفاوت دیگر آن‌ها در این است که می‌توانند چندین مقدار را برگردانند. PL/SQL تفاوت‌های بسیاری را میان توابع و رویه‌ها حفظ کرده‌است که در اهداف نوشتن برنامه می‌توانیم آن‌ها را پیدا کرد.

### بسته‌ها
بسته گروه مفهومی مرتبط با توابع، رویه‌ها، مقادیر، جملات و… هستند. استفاده از بسته به دلیل ترویج استفاده مجدد از کد است. بسته‌ها متشکل از مشخصات بسته و بدنه بسته است که به صوزت اختیاری تعریف می‌شود.

دو مزیت استفاده از بسته این است که:
# رویکرد ماژولار، مرتبط کردن داده‌ها با هم، پنهان کردن منطق کسب و کار، امنیت، افزایش کارایی.
# استفاده از مقادیر بسته‌ای می‌توان سطح هر قسمتی را مشخص کرد.

### متغیرهای عددی
برای تعریف متغیرهای عددی برنامه‌نویس باید متغیر از نوع عدد را برای نام تعریف کند.

## جستارهای وابسته
## منابع

* 

رده:اس‌کیوال
رده:زبان‌های برنامه‌نویسی داده محور
رده:نرم‌افزارهای اوراکل