適切なアクセス権が付与されていても、パッケージ内でプロシージャを実行すると権限が不足します。ORA-01031:権限が不十分です
CREATE OR REPLACE PACKAGE DEVELOPER.DDL_PACKS
AS
PROCEDURE disbcons
AS
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE TESTER.ADDRESS DISABLE CONSTRAINT PK4';
END;
END;
GRANT ALTER ON TESTER.ADDRESS TO DEVELOPER;
EXEC developer.ddl.disbcons
EDIT: IパッケージヘッダーにAUTHID DEFINER
を追加しようとしました。でも、DEVELOPER
で実行すると、ORA-01031:insufficient privileges
エラーが発生します。ユーザー
私がAUTHID CURRENT_USER
を追加して、同じDEVELOPER
ユーザーで実行すると、実行はうまくいきます。あなたが唯一、私はそれが後に動作するとは思わパッケージ仕様の範囲内AUTHID DEFINER/CURRENT_USERを追加することができます@Vivek AUTHID DEFINER
パッケージ内のプロシージャに 'AUTHID DEFINER'を追加する方法はありますか? – Vivek
[ストアドプロシージャ内でイミディエイトを実行すると、権限が不十分なままエラーが発生する](https://stackoverflow.com/questions/996198/execute-immediate-within-a-stored-procedure-keeps-giving-insufficient-priviliges) – lad2025
@Vivek - あなたの手続きがパッケージ内にある場合は、個々の手続きではなく、パッケージレベルでのみ 'AUTHID'を設定することができます。 – kfinity