2016-03-29 2 views
0

無効なログイン試行のためにロックされた各ロック済みのアカウントを識別する手順があります。しかし、spはコンパイル・エラーで作成しています。「ORA-00942:表は存在しません」。 select文を単独で実行すると、spで実行できます。誰も助けることができますか?カーソルを開くとテーブルまたはビューが存在しませんか?

Create or replace PROCEDURE IdentifyLockedAccounts(p_recordset OUT SYS_REFCURSOR) AS 
BEGIN 
OPEN p_recordset FOR SELECT USERNAME FROM DBA_USERS WHERE ACCOUNT_STATUS = 'LOCKED' OR ACCOUNT_STATUS = 'LOCKED(TIMED)'; 
END IdentifyLockedAccounts; 
/

答えて

0

あなたのスキーマは、おそらくいくつかの役割(例えばSELECT_CATALOG_ROLE)を介してDBA_USERSのSELECT権限を持っている - あなたはSQLクライアントを経由して、それを実行することができます理由です。

plsql/viewsのコンパイル時にロールは使用できません。したがって、SELECT ON DBA_USERSをスキーマに直接付与してストアド・プロシージャで使用できるようにする必要があります。

GRANT SELECT ON DBA_USERS to YOURSCHEMA;