gpt4 book ai didi

oracle - PL/SQL block 上的动态参数名称

转载 作者:行者123 更新时间:2023-12-01 15:17:49 24 4
gpt4 key购买 nike

我尝试使用动态 PL/SQL 为多个参数生成乘法算法。我同意有多种方法可以做到这一点,但这个乘法问题是我需要做的其他事情的 PoC。

代码如下

declare
var1 number := 1;
var2 number := 2;
output number := 1;
varname varchar2(10);
begin
for counter in 1..2
loop
execute immediate q'[select var]'||counter||' * :val1 from dual' into output using output;
end loop;

dbms_output.put_line(output);
end;

所以我试图做的是在运行时生成参数名称,然后评估该参数名称。

这可行吗?在内心深处,我不这么认为......但如果这不起作用,我希望避免巨大的痛苦。 :).顺便说一句,我在使用 Oracle 11GR2。

这是我运行代码时发生的情况。

Error starting at line : 1 in command -
declare
var1 number := 1;
var2 number := 2;
output number := 1;
varname varchar2(10);
begin
for counter in 1..2
loop
execute immediate q'[select var]'||counter||' * :val1 from dual' into output using output;
end loop;

dbms_output.put_line(output);
end;
Error report -
ORA-00904: "VAR1": invalid identifier
ORA-06512: at line 9
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Elapsed: 00:00:00.082

感谢和问候。

最佳答案

你可以这样做:

declare
var1 number := 1;
var2 number := 2;
output number := 1;
varname varchar2(10);
begin

for counter in 1..2 loop
EXECUTE IMMEDIATE 'BEGIN :ret := var'||counter ||'; END;' USING OUT output;
dbms_output.put_line(output);
end loop;

end;

关于oracle - PL/SQL block 上的动态参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40406672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com