【发布时间】:2020-09-30 16:44:14
【问题描述】:
declare
TYPE stag_tab IS TABLE OF d_staging%ROWTYPE;
stag_tab1 stag_tab;
begin
--Bulk Collect
select * bulk collect into staging_tab1 from d_staging;
PKG_T.PROC_T(stag_tab1);
end;
/
包定义:
--Package
CREATE OR REPLACE PACKAGE PKG_T
AS
TYPE staging IS TABLE OF d_staging%ROWTYPE;
PROCEDURE PROC_T(p_staging IN staging);
END PKG_T;
/
-- Package Body
CREATE OR REPLACE PACKAGE BODY PKG_T
AS
PROCEDURE PROC_T (p_staging IN staging)
AS
VAR1 d_staging%ROWTYPE;
CUR1 SYS_REFCURSOR;
QUERY_STRING VARCHAR2(2000);
BEGIN
OPEN CUR1 FOR SELECT * from table(p_staging);
LOOP
FETCH CUR1 into VAR1;
EXIT WHEN cur1%NOTFOUND;
INSERT into d (testdata) VALUES (var1.testval1);
COMMIT;
END LOOP;
END;
END PKG_T;
/
【问题讨论】:
-
你能把
PKG_T.PROC_T的定义也放上去吗?为什么进入into staging_tab1,但声明的变量是stag_tab1? -
PROCEDURE PROC_T (p_staging IN staging) AS VAR1 d_staging%ROWTYPE; CUR1 SYS_REFCURSOR; QUERY_STRING VARCHAR2(2000); BEGIN OPEN CUR1 FOR SELECT * from table(p_staging);循环获取 CUR1 到 VAR1 中; cur1%NOTFOUND 时退出;插入 d (testdata) 值 (var1.testval1) ;犯罪;结束循环;结尾;结束PKG_T; /
-
@EJEgyed 无法添加问题所以在评论中添加
-
我已添加到问题中,您现在可以删除评论
-
谢谢@Sujitmohanty30
标签: oracle plsql oracle-sqldeveloper plsqldeveloper