外請參閱下面的代碼:創建動態SQL動態表,並引用它的動態SQL
select top 1 * into #dbusers from dbusers
declare @tsql as varchar(1000)
set @tsql = 'select * from #dbusers'
exec (@tsql)
這個工程,我所期望的,即一列由動態SQL返回。是否有可能做到這一點:
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臨時表,並使用兩種策略避免與其他會話發生衝突:爲表提供唯一名稱(例如guid)或將spid /用戶名稱作爲PK列。 – ajeh
表值函數是一個選項嗎? – Serg
也許首先解決真正的問題:爲什麼你需要首先在動態SQL中創建#temp表? –