无法解析EXECUTE IMMEDIATE中的值

时间:2015-03-19 21:50:56

标签: oracle plsql

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。

任何帮助,提前谢谢。

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中转义'的方法。