• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLストアドについて)

SQLストアドについての質問

このQ&Aのポイント
  • SQLストアド内でテーブル名を可変にする方法について教えてください。
  • SQL Server 2005でストアド内でテーブル名を可変にする方法について教えてください。
  • ストアド内でテーブル名を可変にする際に表示されるエラーメッセージについて教えてください。

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

  • ベストアンサー
  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

このSQLの目的がよくわからないですが、テーブル変数とは、ストアドの中でワークテーブルのように使う変数です。 #とか##がついた一時テーブルと似たようなものです。 おそらくやりたい事はこれでは無くて、SQL構文で実在のテーブルの名前だけを変えたいと言うことだと思います。 ならばSQLを文字列として作成しExecteで実行するなどのやり方か、sp_executesql を使うのがよいと思います。

ganbarenihon
質問者

補足

ご回答頂いた内容で解決すると思いますが、超初心者としては あくまで単純にテーブルの名前だけをIF文で判定する値によって 変更したいのです。(何か違うことを言っているかもしれませんが?) お願いします。

その他の回答 (1)

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.2

>ご回答頂いた内容で解決すると思いますが、超初心者としては >あくまで単純にテーブルの名前だけをIF文で判定する値によって >変更したいのです。(何か違うことを言っているかもしれませんが?) いや、初心者云々ではなく、Transact-SQLの仕様として、できる事とできない事がある以上、その方法に則って処理する以外にありません。 結論から言いますと、#1 さんの方法が正解です。 「SELECT * FROM @AA」と書いた時点で、(エラーのとおり)これは「テーブル変数」として判断されます。 このままの形では、質問者様のおやりになりたい事は残念ながらできません。 素直に、動的SQL(#1さんの回答)を使ってください。 例) DECLARE @SQLSTR VARCHAR(100) (中略) IF @HANTEI = 'ABCEDF' SET @AA=@FETCHTABLE2 --動的SQL文を生成 SET @SQLSTR = 'SELECT * FROM ' + @AA --動的SQL実行 execute (@SQLSTR) ※手元にMSSQL無いので未検証です

ganbarenihon
質問者

お礼

何においても「できること」と「できないこと」がありますよね。 ご回答頂いた内容でトライしてみます。 ありがとうございました。