質問: '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文で実行したいです。 アドバイスのほどよろしくお願いいたします。
回答: > > いろいろ調べてみたところ、EXECでSQL実行した場合は別セッションとして処理されているのでは?という文献を見かけました。 > > > 私は、以下のリンクを参考に動的テーブルを作成しました。 動的SQL > > この#WK_TBLはこのストアドが呼び出す次処理のストアド内でも参照され、また他の既存機能からも利用されているため > > > ローカル一時テーブルを指定していますが、排他制御?等 扱いたいのであれば グローバル一時テーブルを検討してみては。