2017-08-09 9 views
0

テーブル名を入力とするシンプルなpl/sqlプロシージャを書きたいと思って、変数にテーブル行数を格納します。 CES_ODS.ENTITYエラー「このコンテキストでは使用できません 『:i』は、表、ビューまたはシーケンスの参照はPLS-00357」を取得しています実行中変数に行数を格納するために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; 
/

:私は怒鳴るコードを書かれています。 私は間違って何を提案してください。どのように私はそれを働かせることができます。

答えて

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; 
/
関連する問題