Fork me on GitHub

Programming Design Notes

Oracle Stored Function

| Comments

Oracle Stored Function 和 Oracle Stored Procedure 很相似,而 Oracle Stored Function 是必須返回一個數值的,而 Oracle Stored Procedure 則不能返回數值。

Oracle Function 格式如下:
CREATE OR REPLACE 
FUNCTION FUNCTION_NAME(
args1 NUMBER,
args2 VARCHAR2 ) RETURN VARCHAR2
AS
localVar1 NUMBER := 300;
localVar2 VARCHAR2(20) := 'Hello World';
BEGIN
DBMS_OUTPUT.PUT_LINE('args1: ' || args1 || ' args2: ' || args2 || ' localVar1: ' || localVar1 || ' localVar2: ' || localVar2);
RETURN localVar2;
END FUNCTION_NAME;

其中的 args1 和 args2 是使用這個 Stored Function 時要傳入的變數。
而 RETURN VARCHAR2 是指明 Stored Function 會返回的數值型態。

使用方法:
DECLARE
x VARCHAR2(20);
BEGIN
x := FUNCTION_NAME(100, 'Hello World');
DBMS_OUTPUT.PUT_LINE(x);
END;

亦可以預先設定 args 的數值,沒傳入數值則用預設。
CREATE OR REPLACE 
PROCEDURE procedure_name(
args1 NUMBER := 100,
args2 VARCHAR2(20) := 'Hello World' )

使用方法:
DECLARE
x VARCHAR2(20);
BEGIN
x := procedure_name();
DBMS_OUTPUT.PUT_LINE(x);

x := procedure_name(150);
DBMS_OUTPUT.PUT_LINE(x);

x:= procedure_name(200, 'lawpronotes');
DBMS_OUTPUT.PUT_LINE(x);
END;

如果 Stored Function 無需傳入數值可以不使用 ()
即是像以下這樣:
CREATE OR REPLACE 
FUNCTION FUNCTION_NAME RETURN VARCHAR2
AS

相關書籍: Oracle PL/SQL Programming: Covers Versions Through Oracle Database 11g Release 2 (Animal Guide)Oracle Database 11g PL/SQL Programming (Osborne ORACLE Press Series)Oracle PL/SQL Best Practices