在 proc 内部传递表名以将其行计数存储到变量中



我想编写一个简单的pl/sql过程,它将表名作为输入,并将表行计数存储到变量中。我已经编写了下面的代码:

CREATE OR REPLACE procedure ATT_REP.proc_compare2(table_name IN varchar2)
is
cnt NUMBER(30);
begin
execute immediate 'select count(*) from '||table_name||' into '||cnt ;
dbms_output.put_line(cnt);
end;
/

执行时,我得到'PLS-00357:表,视图或序列参考'CES_ODS。实体"在此上下文中不允许"错误。 请建议我做错了什么.我怎样才能让它工作.

尝试以下操作:

CREATE OR REPLACE PROCEDURE ATT_REP.proc_compare2 (table_name IN VARCHAR2)
IS
cnt        NUMBER (30);
sql_stmt   VARCHAR2 (200);
BEGIN
sql_stmt := 'select count(*) from ' || table_name;
EXECUTE IMMEDIATE sql_stmt INTO cnt;
DBMS_OUTPUT.put_line (cnt);
END;
/

最新更新