[英]Don't know temp tables when use Execute in SQL Server
我有以下查詢:
if OBJECT_ID('tempdb..#tmpTables') is not null
drop table #tmpTables
Execute('select TABLE_NAME into #tmpTables from '+@dbName+'.INFORMATION_SCHEMA.TABLES')
while (select COUNT(*) from #tmpTables)>0
begin
//here is my statement
end
當我執行此查詢時,出現此錯誤:
無效的對象名稱“ #tmpTables”。
但是當查詢更改為:
if OBJECT_ID('tempdb..#tmpTables') is not null
drop table #tmpTables
select TABLE_NAME into #tmpTables from INFORMATION_SCHEMA.TABLES
while (select COUNT(*) from #tmpTables)>0
begin
//here is my code
end
有用。
我怎樣才能做到這一點 ?
以單個數字符號(#)開頭的表名稱是“本地臨時表”名稱。
與第一次創建或引用表時,在與SQL Server實例相同的連接期間,本地臨時表僅對其創建者可見。
用戶從SQL Server實例斷開連接后,將刪除本地臨時表。
並且當您通過EXEC()
命令創建Local Temporary Table
時,創建者將不是您,並且在完成該語句后將斷開連接,並且隨着完成連接臨時表的刪除。
您可以使用如下表變量:
DECLARE @tmpTables TABLE(TABLE_NAME nvarchar(max))
insert into @tmpTables
(select TABLE_NAME from INFORMATION_SCHEMA.TABLES)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.