با عرض سلام و خسته نباشید خدمت کاربران محترم سایت آموزشی پی وی لرن. و کاربرانی که آموزش کامل PL/SQL را دنبال می کنند. در این پست آموزشی، ما درمورد متد ها در PL/SQL صحبت خواهیم کرد. یک زیر برنامه PL / SQL ، یک واحد( ماژول ) برنامه است که یک کار خاص را انجام می دهد. این زیر برنامه ها برای ایجاد برنامه های بزرگ تر ترکیب شده اند. این اساسا “طراحی مدولار” نامیده می شود. یک زیر برنامه را می توان با زیر برنامه یا برنامه دیگری که برنامه فراخوانی نامیده می شود، فراخوانی کرد.
زیربرنامه را می توان به سه روش ایجاد کرد:
در سطح طرح، زیر برنامه یک زیرمجموعه مستقل است. این با CREATE PROCEDURE یا بیانیه CREATE FUNCTION ایجاد شده است. که در پایگاه داده ذخیره می شود و می تواند با دستور DROP PROFILE یا DROP FUNCTION حذف شود.
یک زیرمجموعه ایجاد شده در داخل یک بسته یک زیر پروژۀ بسته بندی شده است. که در پایگاه داده ذخیره می شود و می تواند تنها زمانی حذف شود که بسته با دستور DROP PACKAGE پاک شود. ما بسته ها را در جلسه بسته در PL/SQL توضیح خواهیم داد.
در خصوص مبحث متد ها در PL/SQL زیر برنامه PL / SQL بلوک های PL / SQL نامیده می شوند که می تواند با مجموعه ای از پارامترها مورد استفاده قرار گیرد. PL / SQL دو نوع زیر برنامه را فراهم می کند.
این جلسه به بررسی جنبه های مهم یک متد PL / SQL می پردازد. ما در جلسه بعد درباره عملکرد PL / SQL صحبت خواهیم کرد.
هر برنامه زیر PL / SQL نام دارد و همچنین ممکن است یک لیست پارامتر داشته باشد. بلوک های نامشخص مانند بلوک های ناشناس PL / SQL نیز سه قسمت زیر را دارند:
S.No | متد ها در PL/SQL و توضیحات |
---|---|
۱ | بخش اعلامیه این قسمت اختیاری است. با این حال، بخش اعلامیه برای یک زیر برنامه با کلید واژه DECLARE شروع نمی شود. این شامل اعلان انواع، مکان نما ها، ثابت ها، متغیرها، استثنا ها و زیر برنامه های توزیع شده است. این موارد محلی هستند در زیر برنامه PL / SQL زمانی که زیر برنامه اجرایی را کامل اجرا می کنند، متوقف می شود.
|
۲ | قسمت اجرایی این یک بخش اجباری است و حاوی اظهارات است که عمل تعیین شده را انجام می دهند.
|
۳ | استثنا-دست زدن این دوباره یک قسمت اختیاری است. این شامل کد است که خطاهای زمان اجرا را مدیریت می کند. |
یک متد با دستور CREATE OR REPLACE PROCEDURE ایجاد می شود. دستورالعمل ساده برای دستور CREATE OR REPLACE PROCEDURE به شرح زیر است:
1 2 3 4 5 6 | CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [, ...])] {IS | AS} BEGIN < procedure_body > END procedure_name; |
جایی که
مثال زیر یک متد ساده ایجاد می کند که رشته “Hello World!” را نمایش می دهد. و در هنگام اجرا، اجرا می شود.
1 2 3 4 5 6 | CREATE OR REPLACE PROCEDURE greetings AS BEGIN dbms_output.put_line('Hello World!'); END; / |
هنگامی که کد بالا با استفاده از SQL اجرا می شود، نتیجه زیر را تولید می کند.
1 | Procedure created. |
یک متد مستقل می تواند به دو صورت نامیده شود:
متد فوق به نام Hello می تواند با کلمه کلیدی EXECUTE به نام نمایش داده شود.
1 | EXECUTE greetings; |
تماس فوق نمایش داده خواهد شد.
1 2 3 | Hello World PL/SQL procedure successfully completed. |
این متد همچنین می تواند از یکی دیگر از بلوک های PL / SQL نام ببرد.
1 2 3 4 | BEGIN greetings; END; / |
تماس فوق نمایش داده خواهد شد.
1 2 3 | Hello World PL/SQL procedure successfully completed. |
یک روال مستقل با بیانیه DROP PROCEDURE حذف می شود.
نحوه حذف دستورالعمل:
1 | DROP PROCEDURE procedure-name; |
شما می توانید با استفاده از بیانیه زیر مراحل Hello را حذف کنید.
1 | DROP PROCEDURE greetings; |
جدول زیر لیست حالت های پارامتر در زیر برنامه های PL / SQL را نشان می دهد.
S.No | حالت پارامتر و شرح |
---|---|
۱ | IN یک پارامتر IN به شما اجازه می دهد تا یک مقدار را به زیر برنامه منتقل کنید. این یک پارامتر read-only است. در داخل زیر برنامه PL / SQL ، یک پارامتر IN مانند یک ثابت عمل می کند. نمی توان ارزش آن را تعیین کرد. شما می توانید یک متغیر ثابت، لفظی، متغیر اولیه یا بیان را به عنوان پارامتر IN تغییر دهید. شما همچنین می توانید آن را به مقادیر پیش فرض مقداردهی اولیه کنید؛ با این حال، در این مورد، فراخوان زیر برنامه PL / SQL حذف شده است. این حالت پیش فرض پارامتر است. پارامترها توسط مرجع منتقل می شوند.
|
۲ | OUT یک پارامتر OUT یک مقدار به برنامه تماس می دهد. درون زیر برنامه، یک پارامتر OUT مانند یک متغیر عمل می کند. شما می توانید مقدار آن را تغییر دهید و بعد از اختصاص آن مقدار مرجع را ارزیابی کنید. پارامتر واقعی باید متغیر باشد و از طریق مقدار منتقل می شود.
|
۳ | IN OUT یک پارامتر IN OUT یک مقدار اولیه را به یک زیرپرونده انتقال می دهد و یک مقدار به روز شده را به تماس دهنده باز می گرداند. می توان آن را ارزش گذاری کرد و ارزش را می توان خواند. پارامتر واقعی مربوط به یک پارامتر رسمی IN OUT باید یک متغیر باشد، نه یک ثابت یا یک عبارت. پارامتر رسمی بایدبه یک مقدار اختصاص داده شود. پارامتر واقعی بر اساس مقدار است. |
این برنامه حداقل دو مقدار را پیدا می کند. در اینجا، این متد دو عدد را با استفاده از حالت IN می گیرد و حداقل خود را با استفاده از پارامترهای OUT باز می گرداند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | DECLARE a number; b number; c number; PROCEDURE findMin(x IN number, y IN number, z OUT number) IS BEGIN IF x < y THEN z:= x; ELSE z:= y; END IF; END; BEGIN a:= 23; b:= 45; findMin(a, b, c); dbms_output.put_line(' Minimum of (23, 45) : ' || c); END; / |
هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 | Minimum of (23, 45) : 23 PL/SQL procedure successfully completed. |
این متد مقدار مربع ارزش یک مقدار منتشره را محاسبه می کند. این مثال نشان می دهد که چگونه می توانیم از یک پارامتر مشابه برای پذیرش یک مقدار استفاده کنیم و سپس یک نتیجه دیگر را بازگردانیم.
1 2 3 4 5 6 7 8 9 10 11 12 | DECLARE a number; PROCEDURE squareNum(x IN OUT number) IS BEGIN x := x * x; END; BEGIN a:= 23; squareNum(a); dbms_output.put_line(' Square of (23): ' || a); END; / |
هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.
1 2 3 | Square of (23): 529 PL/SQL procedure successfully completed. |
پارامترهای واقعی را می توان به سه متد انتقال داد:
در نشانه موقعیت، شما می توانید این متد را به عنوان
1 | findMin(a, b, c, d); |
در نماد موقعیتی، اولین پارامتر واقعی برای اولین پارامتر رسمی جایگزین می شود. دومین پارامتر واقعی برای پارامتر دوم رسم شده و غیره جایگزین می شود. بنابراین، a برای x جایگزین می شود، b برای y جایگزین می شود، c برای z جایگزین می شود و d برای m جایگزین می شود.
در نماد نامگذاری، پارامتر واقعی با پارامتر رسمی با استفاده از نماد فلش (=>) مرتبط است. فراخوانی متد مانند زیر است.
1 | findMin(x => a, y => b, z => c, m => d); |
در نماد ترکیبی، شما می توانید هر دو نماد در فراخوانی رویه؛ با این حال، علامت موقعیت باید قبل از علامت گذاری نامیده شود.
حالت زیر قانونی است.
1 | findMin(a, b, c, m => d); |
با این وجود این قانونی نیست.
1 | findMin(x => a, b, c, d); |
هنگامی که شما یک متد ها در PL/SQL یا function را ایجاد می کنید، شما ممکن است پارامترهایی را تعریف کنید. سه نوع پارامتر وجود دارد :
IN : این نوع پارامتر می تواند ارجاع شود توسط متد ها در PL/SQL یا function. که مقدار آن نمی تواند توسط procedure ( متد ها در PL/SQL ) یا function جایگزین شود.
OUT : این نوع پارامتر نمی تواند ارجاع شود توسط متد ها در PL/SQL یا function. اما مقدار آن می تواند توسط procedure یا function جایگزین شود.
IN OUT : این نوع پارامتر می تواند ارجاع شود توسط متد ها در PL/SQL یا function.و مقدار آن می تواند توسط procedure یا function جایگزین شود.