PL/SQL ストアド プロシージャの問題に直面しています。sp1 という名前の単一の SP があり、VS2010 用の ODT を使用して Oracle スキーマにデプロイしましたが、問題なく実行できます。展開前にスキーマに既に存在する sp2 という名前の別のストアド プロシージャから sp1 を実行しようとすると、問題が発生します (sp2 の本体に sp1 への呼び出しを追加し、同じスキーマから直接 sp2 を呼び出します)。このようにして、私が得るのはORA-01031 insufficient privileges
例外だけです。
AUTHID CURRENT_USER
グーグルで調べたところ、問題はCREATE PROCEDURE
ステートメントに句がないことが原因であることがわかりました。その句を使用して別のパッケージに sp3 という名前の別のストアド プロシージャを作成し、その中に sp1 の呼び出しを挿入しました。これにより、実行が機能します。
create or replace procedure sp3(string param)
authid current_user
as
begin
sp1(param);
end;
残念ながら、既に存在するパッケージを使用する必要があるため、このソリューションを受け入れることはできません (sp2 プロシージャを使用する少なくとも M 個のアプリケーションがあり、sp3 または sp1 をすべてのアプリケーションに直接追加することは明らかに不可能です)。Oracle サーバーとクライアントの両方にバージョン 11 を使用しています。
何か案は?