在PL / SQL中无法选择count(*)

时间:2015-01-14 09:07:09

标签: oracle plsql

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应该是这样的。 我会将行程名称传递给此脚本,它将返回该表的计数。

提前感谢。

2 个答案:

答案 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>