假設我有一個程序串列 p1,p2,p3..pn ,每個程序只有一個輸出數字引數,基本上每個程序都是一個常數。我如何創建一個回圈來運行所有這些程式并將結果顯示在螢屏上?我嘗試使用 EXECUTE IMMEDIATE 類似的東西:
DECLARE
i number;
n number:=5;
print number;
begin
for i in 1 .. n loop
EXECUTE IMMEDIATE 'BEGIN p'||i||'('||print||') END;' ;
dbms_output.put_line(print);
end loop;
end;
我也嘗試過 [EXECUTE IMMEDIATE sql_stmt INTO print USING i] 的形式,
但我仍然沒有做任何事情
uj5u.com熱心網友回復:
這是BEGIN myprocedure; END;- 你錯過了“;” 在程序呼叫之后。目前還不清楚你想要“列印”做什么,它沒有在任何地方宣告,所以它只會列印一個空值。
CREATE OR REPLACE procedure p1
AS
BEGIN
dbms_output.put_line('this is 1');
END;
/
CREATE OR REPLACE procedure p2
AS
BEGIN
dbms_output.put_line('this is 2');
END;
/
DECLARE
n number:=2;
begin
for i in 1 .. n loop
EXECUTE IMMEDIATE 'BEGIN p'||i||'; END;' ;
end loop;
end;
/
this is 1
this is 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367507.html
標籤:sql 甲骨文 plsql oracle-apex plsql 包
