網頁

2020/8/6

Oracle PL/SQL define Function in Package

Oracle define function in package

在Pacakge(套裝程式)中建立一個Function(函式)的方法如下。

下面範例建立一個Package名為pg_demo,並在裡面宣告一個Function名為f1

pg_demo (spec)

CREATE OR REPLACE PACKAGE pg_demo AS

    -- 宣告函式規格
    FUNCTION f1 (
        i_var VARCHAR2 -- 輸入參數
    ) RETURN VARCHAR2;

END pg_demo;

pg_demo (body)

CREATE OR REPLACE PACKAGE BODY pg_demo AS

    -- 宣告函式主體
    FUNCTION f1 (
        i_var VARCHAR2 -- 輸入參數i_var,型態為VARCHAR2
    ) RETURN VARCHAR2 -- 輸出參數為VARCHAR2型態
    AS
        v_var VARHCAR2(100); -- 宣告變數v_var的型態為VARCHAR2(100)
    BEGIN
        v_var := i_var; -- 將輸入參數i_var賦值給變數v_var
        RETURN v_var;
    END f1;

END pg_demo;

在PLSQL調用pg_dmeo.f1

DECLARE
    v_var VARCHAR2(100); -- 宣告變數v_var為VARCHAR2(100)
BEGIN
    v_var := pg_demo.f1('hello world'); -- 輸入'hello world',並將回傳結果賦值給v_var
    DBMS_OUTPUT.PUT_LINE(v_var); -- 印出結果
END;

執行結果輸出如下。

hello world

要注意function必須定義RETURN,所以調用時要用變數去接。若沒用變數去接會出現
PLS-00221: 'function_name' 不是程序或未定義的錯誤。


沒有留言:

張貼留言