我需要將程序“Proc1”的引數“p_date”傳遞給程序“Proc2”。可能需要使用全域變數或其他方式。謝謝您的幫助。
CREATE OR REPLACE PACKAGE PKG_TEST IS
PROCEDURE proc1 (p_date DATE );
PROCEDURE proc2;
END;
/
CREATE OR REPLACE PACKAGE BODY PKG_TEST IS
PROCEDURE proc1 AS
BEGIN
INSERT INTO tbl_ins
SELECT * FROM tbl WHERE dt = p_date;
END proc1;
PROCEDURE proc2 AS
BEGIN
DELETE tbl_ins WHERE dt = p_date;
END proc2;
END PKG_TEST;
uj5u.com熱心網友回復:
重新定義您的包,以便 PROC_2 也采用 DATE 引數:
CREATE OR REPLACE PACKAGE PKG_TEST IS
PROCEDURE proc1 (p_date DATE);
PROCEDURE proc2 (p_date DATE);
END;
/
CREATE OR REPLACE PACKAGE BODY PKG_TEST IS
PROCEDURE proc1(p_date DATE) AS
BEGIN
INSERT INTO tbl_ins
SELECT * FROM tbl WHERE dt = p_date;
END proc1;
PROCEDURE proc2(p_date DATE) AS
BEGIN
DELETE tbl_ins WHERE dt = p_date;
END proc2;
END PKG_TEST;
uj5u.com熱心網友回復:
在沒有真正原因的情況下使包“有狀態”并不是一個好主意。
在您的情況下,如果您要呼叫proc2
from proc1
(否則,我不知道您為什么要將其硬編碼為與輸入引數相同的值proc1
),您可以這樣做:
CREATE OR REPLACE PACKAGE PKG_TEST IS
PROCEDURE proc1 (p_date DATE );
END;
/
CREATE OR REPLACE PACKAGE BODY PKG_TEST IS
PROCEDURE proc1 IS
PROCEDURE proc2 IS
BEGIN -- proc2 is a local procedure of proc1
DELETE tbl_ins WHERE dt = p_date;
END proc2;
BEGIN
INSERT INTO tbl_ins
SELECT * FROM tbl WHERE dt = p_date;
PROC2();
END proc1;
END PKG_TEST;
/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/472111.html
上一篇:如何重置/重新初始化變數?
下一篇:函式中的區域變數