0

括弧内で #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 
4

1 に答える 1

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 句を使用します

于 2013-06-14T14:06:27.597 に答える