无法在 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>
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>