~やりたいこと~
SQLServer2008R2を使用しています。
あるテーブルに一時表の作成クエリが格納されているカラムがあり、これまではAccessVBAでそのカラムから取得したSQLをもとに一時表を作成しておりました。
今回、上記AccessVBAとは別に、SQLServerのメンテナンスプランで実行するストアドを作成することとなりましたが、このストアド内で同様に一時表を作成したいと思っています。
~問題点~
現状、一時表の作成クエリの取得はできているのですが、これをストアド内で動的SQLとして実行しても続く処理で一時表が認識できないという点です。
DECLARE @WSQL VARCHAR(4000) --今回は固定のSQL文字列としていますが、本来はここで別テーブルからSQL取得しています。 SELECT @WSQL = 'CREATE TABLE #WK_TBL (COL1 VARCHAR (7) NULL ,COL2 INT NULL DEFAULT 0 )' EXEC (@WSQL) INSERT INTO #WK_TBL (COL1,COL2) VALUES ('001',10) --ここでエラー発生。#WK_TBLがみつからない。
ちなみにEXECを使用せず、直接Create Tableを記述すれば問題なくINSERTできました。
また#をつけず、通常表として作成・INSERTした場合にはEXECでも問題なく処理できました。
いろいろ調べてみたところ、EXECでSQL実行した場合は別セッションとして処理されているのでは?という文献を見かけました。
たしかに別セッションと考えれば納得いく動作なのですが、だとしたらどうすればいいのか、やはり無理なのか、よい対応方法をご存知の方がいればご教授いただきたいです。
この#WK_TBLはこのストアドが呼び出す次処理のストアド内でも参照され、また他の既存機能からも利用されているため、できればテーブル作成も埋め込みではなくカラムから取得したCreate文で実行したいです。
アドバイスのほどよろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/12 06:51
2016/02/12 07:25
2016/02/12 09:29