締切済み

ORACLEのUPDATE処理

  • すぐに回答を!
  • 質問No.7338095
  • 閲覧数1007
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 23% (4/17)

お世話になります。

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はできない
という事なのでしょうか。

よろしくお願いします。

回答 (全1件)

  • 回答No.1

ベストアンサー率 60% (431/717)

メッセージの通りです。ストアドファンクションでは更新対象表を参照することはできません。
UPDATE文を工夫して対処してください。
ストアドプロシージャでUPDATEするようにはできます。
お礼コメント
appplus2

お礼率 23% (4/17)

ご回答ありがとうございました。
先ほどストアドファンクション内で更新対象表を参照することができましたので
問題解決しました。
投稿日時 - 2012-03-02 18:48:02
Be MORE 7・12 OK-チップでイイコトはじまる
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ