oracle function详解,Oracle函数用法详解
本文概述
函數是用于返回單個值的子程序。你必須在調用函數之前聲明并定義一個函數。它可以在同一時間聲明和定義, 也可以在同一塊中先聲明然后定義。
在Oracle中創建函數
句法
CREATE [OR REPLACE] FUNCTION function_name
[ (parameter [, parameter]) ]
RETURN return_datatype
IS | AS
[declaration_section]
BEGIN
executable_section
[EXCEPTION
exception_section]
END [function_name];
在創建過程或函數之前, 必須先定義一些參數。這些參數是
IN:這是默認參數。它將值傳遞給子程序。
OUT:必須指定。它向調用方返回一個值。
IN OUT:必須指定。它將初始值傳遞給子程序, 并將更新后的值返回給調用者。
Oracle函數示例
讓我們看一個創建函數的簡單示例。
create or replace function adder(n1 in number, n2 in number)
return number
is
n3 number(8);
begin
n3 :=n1+n2;
return n3;
end;
/
現在編寫另一個程序來調用該函數。
DECLARE
n3 number(2);
BEGIN
n3 := adder(11, 22);
dbms_output.put_line('Addition is: ' || n3);
END;
/
輸出
Addition is: 33
Statement processed.
0.05 seconds
另一個Oracle函數示例
讓我們以一個示例來演示聲明, 定義和調用一個簡單的PL / SQL函數, 該函數將計算并返回兩個值的最大值。
DECLARE
a number;
b number;
c number;
FUNCTION findMax(x IN number, y IN number)
RETURN number
IS
z number;
BEGIN
IF x > y THEN
z:= x;
ELSE
Z:= y;
END IF;
RETURN z;
END;
BEGIN
a:= 23;
b:= 45;
c := findMax(a, b);
dbms_output.put_line(' Maximum of (23, 45): ' || c);
END;
/
輸出
Maximum of (23, 45): 45
Statement processed.
0.02 seconds
使用表的Oracle函數示例
讓我們來一張客戶桌。本示例說明了如何創建和調用獨立函數。此函數將返回customers表中的CUSTOMERS總數。
創建客戶表并在其中有記錄。
Customers
Id
Name
Department
Salary
1
alex
web developer
35000
2
ricky
程序開發人員
45000
3
mohan
網頁設計師
35000
4
dilshad
數據庫管理器
44000
創建函數:
CREATE OR REPLACE FUNCTION totalCustomers
RETURN number IS
total number(2) := 0;
BEGIN
SELECT count(*) into total
FROM customers;
RETURN total;
END;
/
執行完上述代碼后, 你將得到以下結果。
Function created.
調用Oracle函數:
DECLARE
c number(2);
BEGIN
c := totalCustomers();
dbms_output.put_line('Total no. of Customers: ' || c);
END;
/
在SQL提示符下執行上述代碼后, 你將獲得以下結果。
Total no. of Customers: 4
PL/SQL procedure successfully completed.
Oracle遞歸函數
你已經知道一個程序或一個子程序可以調用另一個子程序。當子程序調用自身時, 它稱為遞歸調用, 該過程稱為遞歸。
計算數字階乘的示例
讓我們以一個例子來計算數字的階乘。本示例通過遞歸調用自身來計算給定數字的階乘。
DECLARE
num number;
factorial number;
FUNCTION fact(x number)
RETURN number
IS
f number;
BEGIN
IF x=0 THEN
f := 1;
ELSE
f := x * fact(x-1);
END IF;
RETURN f;
END;
BEGIN
num:= 6;
factorial := fact(num);
dbms_output.put_line(' Factorial '|| num || ' is ' || factorial);
END;
/
在SQL提示符下執行上述代碼后, 將產生以下結果。
Factorial 6 is 720
PL/SQL procedure successfully completed.
Oracle Drop函數
如果要從數據庫中刪除創建的函數, 則應使用以下語法。
句法:
DROP FUNCTION function_name;
總結
以上是生活随笔為你收集整理的oracle function详解,Oracle函数用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: magento -- 修改文件来手动控制
- 下一篇: 西门子Step7的AT指令示例