在括号内使用#temp

时间:2013-06-14 13:31:17

标签: sql-server-2008 tsql temp-tables

如何在括号内使用#temp?

或者如何在括号内使用表变量?

显然,真正的查询要复杂得多。

失败:

IF OBJECT_ID(N'tempdb..#Temp', N'U') IS NOT NULL DROP TABLE #Temp 
CREATE TABLE #Temp (sID int NOT NULL);
select count(*) 
from 
(
  insert into #Temp 
  select top 10 sID from [docSVsys]  
  select * from #temp
) as [count] 
IF OBJECT_ID(N'tempdb..#Temp', N'U') IS NOT NULL DROP TABLE #Temp

失败:

select count(*) 
from 
(
  IF OBJECT_ID(N'tempdb..#Temp', N'U') IS NOT NULL DROP TABLE #Temp 
  CREATE TABLE #Temp (sID int NOT NULL);
  insert into #Temp 
  select top 10 sID from [docSVsys]  
  select * from #temp
) as [count] 
IF OBJECT_ID(N'tempdb..#Temp', N'U') IS NOT NULL DROP TABLE #Temp

使用:
但我需要在括号内使用#temp

IF OBJECT_ID(N'tempdb..#Temp', N'U') IS NOT NULL DROP TABLE #Temp 
CREATE TABLE #Temp (sID int NOT NULL);
insert into #Temp 
select top 10 sID from [docSVsys]  
select * from #temp
IF OBJECT_ID(N'tempdb..#Temp', N'U') IS NOT NULL DROP TABLE #Temp 

1 个答案:

答案 0 :(得分:1)

您只能在括号(子查询)中使用SELECT语句。但是你不能在这里使用INSERT语句(#-table并不重要)。尝试

IF OBJECT_ID(N'tempdb..#Temp', N'U') IS NOT NULL DROP TABLE #Temp 
CREATE TABLE #Temp (sID int NOT NULL);

insert into #Temp 
select top 10 sID from [docSVsys];

select count(*) 
from 
(
  select * from #temp
) as [count] 
IF OBJECT_ID(N'tempdb..#Temp', N'U') IS NOT NULL DROP TABLE #Temp

或使用OUTPUT clause复杂案例

相关问题