這些是事實:
- 這個程序是一個例子
CREATE OR replace PROCEDURE Demo_test(
v_1 IN NUMBER DEFAULT NULL,
v_2 IN DATE DEFAULT NULL,
v_n IN VARCHAR2 DEFAULT NULL,
v_c OUT SYS_REFCURSOR
)
AS
BEGIN
open v_c for
select dat_1, dat_2, dat_n from(
select vw.od1, xt.od2, xt.odn
from xview vw
join xtbl xt
order by vw.od1 asc
FETCH FIRST 100 ROWS ONLY
) fidata;
END demo_test;
> - and i have this other bad procedure, i need to fix:
CREATE OR replace PROCEDURE Demo_test2(
v_1 IN NUMBER DEFAULT NULL,
v_2 IN DATE DEFAULT NULL,
v_n IN VARCHAR2 DEFAULT NULL,
v_c OUT SYS_REFCURSOR
)
as
begin
execute immediate ('create table xtbl (val1 varchar2, val2 date, val2 number)');
END demo_test2;
- 我需要用 Demo_test 資料填充這個表 xtbl(Demo_test2)
- 并顯示結果
uj5u.com熱心網友回復:
在偽代碼中
declare
rc sys_refcursor;
v1, v2, v3 number; -- ie, the datatypes of dat1,dat2,...,datn
begin
Demo_test(in_parameters, rc);
loop
fetch rc into v1,v2,v3;
exit when rc%notfound;
execute immediate 'insert into xtbl values (:1,:2,:3)' using v1,v,v3;
end loop;
end;
“立即執行”是因為我們還不能參考“xtbl”,因為它在編譯時不存在。
但我會看看這里的要求——我們通常不希望動態地創建表。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472539.html
