مانند 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)