• ベストアンサー

Oracle8i ストアドプロシジャ

表名(テーブル名)等を変数にセットし、 いざ使おうとするとエラーになります。 何か関数を使えば、正しく動くものなのか。 ご存知の方、ご教授ください。 例:表領域名、DB_LINK名がデータとして存在する 変数A := 表領域名変数 || '表名' || DB_LINK名変数; select * from 変数A; 上記を「select * from ????(変数A);」 と、すれば出来そうな気がするのですが、????が何か、 または、別の方法があれば、教えてください。

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

  • ベストアンサー
  • msystem
  • ベストアンサー率42% (79/186)
回答No.3

たぶんですが、表名を変数にしたいのであれば、そのままでは動かないはずです。 確か、DBMS_SQLパッケージを使わないと、ストアドプロシージャでは使えないはずです。(動的問合せです。) DBMS_SQLパッケージについては、さまざまなところに使用法などがあると思いますので、検索してみてください。

ike_aqc
質問者

お礼

ありがとうございました。 DBMS_SQLの作法でちょっと苦労しましたが、大変助かりました。 また、今度も助けてください。

その他の回答 (2)

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.2

バインド変数を使いたいなら :変数名 です。見当違いでしたらすみません。

ike_aqc
質問者

お礼

参考になりました。 次回もよろしく。

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.1

エラーの種類が書かれていないので何とも言いようがありませんが、 とりあえずDBLINKの書式が間違っているように見えますが。 スキーマ名.表名@DBLINK名

ike_aqc
質問者

お礼

どうもです。 書式はご指摘の通りです。私のタイプミスでした。

関連するQ&A