アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

UPDATE文のSET句からストアドファンクションを呼び返却値を設定する処理を行っています。
が、以下のエラーが出ます。

「ORA-04091: 表xx.xxxは変更しています。トリガー/関数は見ることができません」

テーブルにトリガーは使用していません。

ストアドファンクション内で、コール側のUPDATEするTABLEを参照(SELECT)しているのですが
この箇所を削除すると、エラー発生しません。

以下のような処理です。
UPDATE TABLE_A SET COL_A = FUNC(KEY1,KEY2);

FUNC(PKEY1,PKEY2) IS

CORSOR C1 IS
SELECT COL_B FROM TABLE_A
WHERE KEY1 = PKEY1
AND KEY2 = PKEY2;
BEGIN
・・・
END;



UPDATEですが、自TABLEのSELECTは
・SET句の中でSELECTする場合はうまくいく
・引数渡し→ストアドファンクション内でSELECTはできない
という事なのでしょうか。

よろしくお願いします。

A 回答 (1件)

メッセージの通りです。

ストアドファンクションでは更新対象表を参照することはできません。
UPDATE文を工夫して対処してください。
ストアドプロシージャでUPDATEするようにはできます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
先ほどストアドファンクション内で更新対象表を参照することができましたので
問題解決しました。

お礼日時:2012/03/02 18:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す