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

count(*) cannot be selected in PL/SQL

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

提前致谢。

你必须像下面这样使用

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 了解更多信息

正确的方法是EXECUTE IMMEDIATE str into rec_count;。在执行 EXECUTE IMMEDIATE.

时必须使用 INTO 子句
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>