の外にそれを参照する以下のコードを参照してください。私は、すなわち一つの行は、動的SQLによって返される期待どおり動的SQLで動的テーブルを作成し、動的SQL
select top 1 * into #dbusers from dbusers
declare @tsql as varchar(1000)
set @tsql = 'select * from #dbusers'
exec (@tsql)
この作品。これを実行することが可能です:
ここdeclare @tsql as varchar(1000)
set @tsql = 'select top 1 * into #dbusers from dbusers'
exec (@tsql)
select * from #dbusers
私はエラーを取得する:
Invalid object name '#dbusers'
は、回避策はありますか?
私は、動的SQLで出力パラメータを使用できることを認識しています。ただし、ストアドプロシージャを使用するときは、出力パラメータとしてテーブルを返すことはできません。
これは可能ですか?回避策はありますか(物理テーブルの作成を除く)?
##を使用してgloval tempテーブルを作成し、他のセッションとの衝突を避けるために2つの方法を使用できます。テーブルに一意の名前(たとえばguid)を付けるか、spid/user nameをPK列として追加します。 – ajeh
テーブル値関数はオプションですか? – Serg
実際の問題を最初に解決するかもしれません。なぜ、最初に動的SQLで#tempテーブルを作成する必要がありますか? –