• 締切済み

T-SQLで一時テーブルの名前を毎回変更できるストアドを作りたい

お世話になります。 初歩的な質問で恐縮ですがご教示いただければ幸いです。 T-SQLでグローバル一時テーブルの名前を毎回変更できるストアドを作り、Access2003アプリから実行させる予定です。 ストアドに、CREATE TABLE [dbo].[@tablename]のように書き、 ストアド実行時に@tablenameの値を ##ABC のように入力したのですが、テーブルはtempdbではなく、しかもテーブル名は@tablenameでテーブルが作成されてしまいます。 CREATE TABLE [dbo].@tablename のように[]をとると ストアド自体を作成できずエラーになってしまいます。 宜しくお願いします。 create PROCEDURE [dbo].[ストアドプロシージャー名] (@tablename nvarchar(255)) AS BEGIN from SET NOCOUNT ON; CREATE TABLE [dbo].[@tablename] <以下省略>

みんなの回答

回答No.2

>アドホッククエリにするしかないですかね。 SQL Serverでは、そう呼ぶのですね。 そういうことだと思います。

tochou4848
質問者

お礼

ご連絡ありがとございました。 今回はアドホッククエリで対応したいと思います。

  • plutoscp
  • ベストアンサー率0% (0/1)
回答No.1

一時テーブルの概念について、先に以下の http://www.microsoft.com:80/japan/sql/prodinfo/compare/fororacle/sqlserver_02_chap1_08.mspx ローカル一時テーブルを使えばテーブル名を変えなくても良いとおもいます。

参考URL:
http://www.microsoft.com:80/japan/sql/prodinfo/compare/fororacle/sqlserver_02_chap1_08.mspx
tochou4848
質問者

お礼

ご回答ありがとうございます。 今回は別のセッションでも同じ一時テーブルを参照したいことや その他の条件もあり、グローバルを採用してます。 何かよい方法はありませんでしょうか? ストアドではなくアドホッククエリにするしかないですかね。