زبان **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 کامندی مانند زیر دارد:

```
RAISE <exception name>;

```

شرکت اوراکل چند استثنا از پیش تعریف شده مانند NO\_DATA\_FOUND ,TOO\_MANY\_ROWS، دارد. هر استثناء شماره خطا در SQL و پیام خطا مرتبط با آن را دارد. برنامه نویسان می‌توانند با استفاده از SQLCODE و SQLERRM به نابع هر کدام دسترسی داشته باشد.

```
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

1. پارامتر IN فقط برای ورودی به کار می‌رود.
2. پارامتر OUT برای مقدار دهی به پارامترهای NULL به کار می‌رود.
3. پارامتر IN OUT می‌تواند برای مقدار دهی مقادیر استفاده شود.

### رویه‌ها

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

### بسته‌ها

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

دو مزیت استفاده از بسته این است که:

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

### متغیرهای عددی

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

جستارهای وابسته
---------------

منابع
-----

* مشارکت‌کنندگان ویکی‌پدیا. «PL/SQL». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۵ ژوئن ۲۰۱۳.

| * ن
* ب
* و
زبان‌های برنامه‌نویسی |
| --- |
| 
* گاه‌شمار

 |
| 
* زبان اسمبلی
* اسکالا
* ای‌پی‌ال
* بیسیک
* سی
* سی++
* سی شارپ
* هسکل
* کوبول
* فورترن
* جاوا
* جاوااسکریپت
* لیسپ
* پرولوگ
* پاسکال
* پرل
* پی‌اچ‌پی
* پایتون
* روبی
* ویژوال بیسیک دات‌نت
* اسمال‌تاک
* **بیشتر...**

 |
| 
* **رده:زبان‌های برنامه‌نویسی**
* **مقایسه**
* **فهرست‌ها**
	+ فهرست زبان‌های برنامه‌نویسی
	+ زبان‌ها بر پایه نوع
	+ بر پایه نسل
	+ زبان‌های غیر انگلیسی

 |

| * ن
* ب
* و
چارچوب نرم‌افزاری تحت وب |
| --- |
| ای‌اس‌پی‌دات‌نت | 
* ای‌اس‌پی‌دات‌نت ام‌وی‌سی
* ASP.NET Web Forms
* ASP.NET Dynamic Data
* BFC
* دات‌نت‌نیوک
* MonoRail
* OpenRasta
* Umbraco

 |
| کلد فیوژن | 
* ColdSpring
* Fusebox
* Mach-II
* Model-Glue
* onTap
* on Wheels

 |
| لیسپ معمولی | 
* CL-HTTP
* SymbolicWeb
* UnCommon Web
* Weblocks

 |
| سی++ | 
* CppCMS
* Wt

 |
| جاوا | 
* آپاچی استراتس
* AppFuse
* Flexive
* ابزار وب گوگل
* Grails
* وادین
* ItsNat
* جاواسرور فیسز
* Jspx
* Makumba
* OpenXava
* پلی فریمورک
* Eclipse RAP
* Reasonable Server Faces
* RIFE
* Seam
* اسپرینگ فریمورک
* Stripes
* Tapestry
* WebWork
* Wicket
* ZK
* ICEfaces
* WaveMaker

 |
| اسکالا | 
* Lift (web framework)
* پلی فریمورک

 |
| جاوااسکریپت | 
* Ample SDK
* چارچوب جاوااسکریپت پروتوتایپ
* Rico
* script.aculo.us
* SproutCore
* جی‌کوئری
* دوجو
* امبر جی‌اس

 |
| پرل | 
* Catalyst
* Dancer
* Gantry
* Interchange
* Mason
* Maypole
* Mojolicious
* Poet
* WebGUI

 |
| پی‌اچ‌پی | 
* AppFlower
* کیک‌پی‌اچ‌پی
* کدایگنایتر
* دروپال
* ایی۱۰۷
* فیول‌پی‌اچ‌پی
* Helium
* هرد
* جوملا
* Lithium
* Midgard
* مادایکس
* Qcodo
* Seagull
* سیلوراسترایپ
* سیمفونی
* تایپو۳
* وردپرس
* Xaraya
* یی
* چارچوب زند
* Zeta Components
* لاراول
* فلر فریمورک
* فلکون

 |
| پایتون | 
* CherryPy
* جنگو
* فلسک
* Nevow
* TurboGears
* Plone
* Pyjamas
* Pylons
* Pyramid
* web2py
* Zope
* تورنادو (وب سرور)

 |
| روبی | 
* روبی آن ریلز
* Merb
* Sinatra
* Hobo
* Camping
* Nitro
* Ramaze

 |
| اسمال‌تاک | 
* AIDA/Web
* Seaside

 |
| سایر زبان‌ها | 
* Application Express (پی‌ال/اس‌کیوال)
* HAppS (هسکل)
* Kepler (لوا)
* OpenACS (تی‌سی‌ال)
* SproutCore (جاوااسکریپت/روبی)
* Yaws (ارلنگ)

 |