• ベストアンサー

ストアドにしたらエラーになる

10gを使ってます。 1.ワークテーブル作成 2.そのテーブルにインサート の一連のスクリプトをsql/plusかなんかでやると問題ないのに それをストアドにしたら2.の時にテーブルが存在しないと言うことで コンパイルエラーになってしまいます。 こうゆう場合どうすればコンパイルエラーを回避できるのでしょうか? 1.と2.を分割して二つのストアドにしないといけないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 > コンパイルエラーになってしまいます PL/SQL のコンパイル時に「1.」で作成しているテーブルが存在しないために エラーになっています。 「2.」をExecute immediate を使って動的SQL にする事でコンパイルエラーを 回避できます。 後は、#1 の方の言うように、事前にテーブルを作成しておくかですね。

itachi020
質問者

補足

やってみます。 ありがとうございます。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

ストアド内でワークテーブルをCREATEするのではなく、事前に CREATE GLOBAL TEMPORARY TABLE でグローバル一時テーブルを作成し、そこにインサートするようにできませんか。

itachi020
質問者

補足

それはストアドを二つに分割って事ですよね なるべく一つのストアドで解決したいです。