- ベストアンサー
SQLストアドについての質問
- SQLストアド内でテーブル名を可変にする方法について教えてください。
- SQL Server 2005でストアド内でテーブル名を可変にする方法について教えてください。
- ストアド内でテーブル名を可変にする際に表示されるエラーメッセージについて教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
このSQLの目的がよくわからないですが、テーブル変数とは、ストアドの中でワークテーブルのように使う変数です。 #とか##がついた一時テーブルと似たようなものです。 おそらくやりたい事はこれでは無くて、SQL構文で実在のテーブルの名前だけを変えたいと言うことだと思います。 ならばSQLを文字列として作成しExecteで実行するなどのやり方か、sp_executesql を使うのがよいと思います。
その他の回答 (1)
- utakataXEX
- ベストアンサー率69% (711/1018)
>ご回答頂いた内容で解決すると思いますが、超初心者としては >あくまで単純にテーブルの名前だけを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無いので未検証です
お礼
何においても「できること」と「できないこと」がありますよね。 ご回答頂いた内容でトライしてみます。 ありがとうございました。
補足
ご回答頂いた内容で解決すると思いますが、超初心者としては あくまで単純にテーブルの名前だけをIF文で判定する値によって 変更したいのです。(何か違うことを言っているかもしれませんが?) お願いします。