CREATE TABLE test
(TESTID NUMBER(3,0),
C1 NUMBER(3,0),
C2 NUMBER(3,0),
C3 NUMBER(3,0)
);
Values in the table:
insert into test values(1,2,3);
declare
val VARCHAR(20);
begin
for i in 1..5
loop
EXECUTE IMMEDIATE 'SELECT''C'||to_Char(i)||''' from test where tid=:1' INTO val
using i;
dbms_output.put_line('Value of Column is '||val);
end loop;
end;
- 这里我正在寻找列(i)的值,但输出是
匿名阻止完成 COL1栏的价值
而不是COL1,我正在寻找1。
任何帮助,提前谢谢。
答案 0 :(得分:4)
认为您不想从表'C1'
中选择C1
,... test
,...,所以请使用:
declare
val VARCHAR(20);
begin
for i in 1..5 loop
EXECUTE IMMEDIATE 'SELECT C'||to_Char(i)||
' FROM test WHERE tid=:1' INTO val USING i;
dbms_output.put_line('Value of Column is '||val);
end loop;
end;
SELECT ''C'||to_Char(1)||'''...
表示SELECT 'C1'...
- 它是在ORACLE中转义'
的方法。