宣言したプロシージャやファンクションの中で、関数を宣言する事ができます。 無駄にプロシージャやファンクションを宣言する必要がなくなります。
CREATE OR REPLACE PROCEDURE HOGE
IS
WNUM NUMBER;
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/ ■内部関数 CAL 宣言■ I1 と I2を足した数を返す
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
FUNCTION CAL
(
I1 IN NUMBER,
I2 IN NUMBER
)RETURN NUMBER IS
BEGIN
RETURN I1 + I2;
END;
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/ ■内部関数 STRINGOUT■ I1を出力
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
PROCEDURE STRINGOUT
(
I1 IN VARCHAR2
)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(I1);
END;
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/ 通常プログラム
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
BEGIN
--内部関数呼出
WNUM := CAL(5,5);
DBMS_OUTPUT.PUT_LINE(WNUM);
--内部関数呼出
STRINGOUT('HOGEHOGE');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR!!' || SQLERRM(SQLCODE));
END;