مانند procedures ، توابع (Function) از یک گروه از دستورات PL/SQL تشکیل شده است ولی بر خلاف procedures ، یک تابع حتما باید یک مقدار را برگرداند.
توابع نیز در پایگاه داده مانند procedures ذخیره می شوند.
نحو ایجاد تابع:
-- function_name: نام تابع
-- parameter: پارامترهای ارسالی به تابع
-- return_datatype : نوع مقدار بازگشتی از تابع
-- declaration_section : تعریف متغیر درون تابعی
-- executable_section : دستورات درون تابع
-- exception_section : مدیریت خطا
CREATE [OR REPLACE] FUNCTION function_name
[ (parameter [,parameter]) ]
RETURN return_datatype
IS | AS
[declaration_section]
BEGIN
executable_section
[EXCEPTION
exception_section]
END [function_name];
هنگامی که شما یک procedure یا function را ایجاد می کنید، شما ممکن است پارامترهای تعریف کنید. سه نوع از پارامتر وجود دارد :
IN : این نوع پارامتر می تواند ارجاع شود توسط procedure یا function. که مقدار آن نمی تواند توسط procedure یا function جایگزین شود.
OUT : این نوع پارامتر نمی تواند ارجاع شود توسط procedure یا function. اما مقدار آن می تواند توسط procedure یا function جایگزین شود.
IN OUT : این نوع پارامتر می تواند ارجاع شود توسط procedure یا function.و مقدار آن می تواند توسط procedure یا function جایگزین شود.
در زیر مثالی آورده شده است :
- یک تابع با پارامتر ورودی
CREATE OR REPLACE FUNCTION Sum(a Integer, b Integer)
RETURN Integer
AS
Begin
return a + b;
End;
- یک تابع بدون پارامتر ورودی
CREATE OR REPLACE FUNCTION Get_Current_Datetime
RETURN Date
AS
Begin
return sysdate;
End;
برای حذف کردن یک تابع از دستور زیر استفاده نمایید :
DROP FUNCTION <function_name>;
همچنین برای فراخوانی تابع از طریق زیر می توانید اقدام نمایید :
SELECT cul1, function_name (variable_name) FROM table
همچنی می توانید با تعریف متغیر نیز اقدام به فراخوانی تابع نمایید :
c Integer;
....
c := Sum(10, 100);
یک مثال دیگر :
-- یک تابع با ورودی به نام (p_Emp_ID)
-- و با مقدار بازگشتی First_Name از جدول Employee
Create Or Replace Function Get_Emp_First_Name(p_Emp_Id Number)
Return Varchar2 As
v_Emp_First_Name Employee.First_Name%Type;
Begin
Begin
Select Emp.First_Name
Into v_Emp_First_Name
From Employee Emp
Where Emp.Emp_Id = p_Emp_Id;
Exception
When No_Data_Found Then
v_Emp_First_Name := Null;
End;
Return v_Emp_First_Name;
End;
فراخوانی تابع بالا در دستور select
Select Emp.Emp_Id
,Get_Emp_First_Name(Emp.Emp_Id) Emp_First_Name
From Employee Emp;
نتیجه اجرای دستور بالا :
آموزش PL/SQL :
2- برای شروع به کار با PL/SQL به چه چیزی نیاز داریم
5- کار با PL/SQL در ابزار PL/SQL Developer
6- معرفی انواع داده های PL/SQLمتداول
6،7- تعریف متغیر از نوع جدول (table)
6،8- تعریف متغیر از نوع آرایه (Array)
7،2- Explicit cursor (مکان نمای صریح)
7،3- Implicit cursor (مکان نمای غیر صریح یا ضمنی)
8 - پروسیجر یا Stored procedure
11- معرفی پکیج
11،1- ساخت پکیج در PL/SQL Developer
11،2- تست پکیج
معرفی اوراکل اپکس (oracle apex)