DECLARE
rec_count integer default 0;
str varchar(100);
BEGIN
str := 'select count(*) into ' || rec_count ||' from emp_table';
EXECUTE IMMEDIATE (str);
dbms_output.put_line(rec_count);
END;
我无法计算rec_count valibale。我收到了ORA-00905消息。
我必须在我的脚本中添加这些行,所以sql statment应该是这样的。 我会将行程名称传递给此脚本,它将返回该表的计数。
提前感谢。
答案 0 :(得分:4)
你必须使用如下
DECLARE
rec_count integer default 0;
str varchar(100);
BEGIN
str := 'select count(*) from emp_table';
EXECUTE IMMEDIATE str into rec_count;
dbms_output.put_line(rec_count);
END;
必须在into
之后使用execute immediate
子句。有关更多信息,请参阅此处http://docs.oracle.com/cd/B12037_01/appdev.101/b10807/13_elems017.htm
答案 1 :(得分:1)
正确的方法是EXECUTE IMMEDIATE str into rec_count;
。执行INTO
时必须使用EXECUTE IMMEDIATE
子句。
SQL> set serveroutput on
SQL> DECLARE
2 rec_count integer default 0;
3 str varchar(100);
4 BEGIN
5 str := 'select count(*) from emp';
6 EXECUTE IMMEDIATE str into rec_count;
7 dbms_output.put_line(rec_count);
8 END;
9 /
14
PL/SQL procedure successfully completed.
SQL>