2013-04-23 75 views
1

当我尝试执行下面的查询即时通讯错误在第4行如“ ORA-06512:在第5行”,其中“样本”是动态全局临时表。动态查询错误

declare max_seq_dp varchar2(20); 
cnt number(20); 
begin 
    execute immediate 'select count(*) into cnt from sample'; 
    dbms_output.put_line(cnt); 
    if (cnt)>0 then 
    begin 
     select max(sequence_number) into max_seq_dp 
     from sample1 where column1 = '2045' 
     and is_active = 1; 
     dbms_output.put_line(max_seq_dp); 
    end; 
    end if; 
end; 

感谢

+0

如果(cnt)> 0,那么改变这个如果cnt> 0然后 – Satya 2013-04-23 09:14:51

回答

4

变量需要外部的执行直接指定:

execute immediate 'select count(*) from sample' into cnt;

但只要表名是不是动态的,你可以做同样的事情立即执行:

begin 
    select count(*) into cnt from sample; 
    ... 
+0

Nyffenegger - 你太棒了,非常感谢你 – user1990383 2013-04-23 09:24:40