2017-08-09 32 views
0

我想寫一個簡單的pl/sql過程,它將一個表名稱作爲輸入,並將表格行數存儲到一個變量中。我已經寫了婁代碼:在proc中傳遞表名將其行數存儲到一個變量中

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.ENTITY’不允許在這方面」的錯誤。 請建議我做錯了什麼。我如何使它工作。

回答

1

嘗試以下操作:

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; 
/
相關問題