電子書籍の厳選無料作品が豊富!

10gを使ってます。

1.ワークテーブル作成
2.そのテーブルにインサート

の一連のスクリプトをsql/plusかなんかでやると問題ないのに
それをストアドにしたら2.の時にテーブルが存在しないと言うことで
コンパイルエラーになってしまいます。

こうゆう場合どうすればコンパイルエラーを回避できるのでしょうか?
1.と2.を分割して二つのストアドにしないといけないのでしょうか。

A 回答 (2件)

こんにちわ。



> コンパイルエラーになってしまいます
PL/SQL のコンパイル時に「1.」で作成しているテーブルが存在しないために
エラーになっています。
「2.」をExecute immediate を使って動的SQL にする事でコンパイルエラーを
回避できます。

後は、#1 の方の言うように、事前にテーブルを作成しておくかですね。

この回答への補足

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

補足日時:2012/01/09 13:12
    • good
    • 0

ストアド内でワークテーブルをCREATEするのではなく、事前に


CREATE GLOBAL TEMPORARY TABLE
でグローバル一時テーブルを作成し、そこにインサートするようにできませんか。

この回答への補足

それはストアドを二つに分割って事ですよね

なるべく一つのストアドで解決したいです。

補足日時:2012/01/09 13:11
    • good
    • 0

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