为什么SQL Server坚持认为临时表已经存在!一个或另一个将会发生! ,所以永远不会这样。

declare @checkvar  varchar(10)
declare @tbl TABLE( colx varchar(10) )
set @checkvar ='a'

INSERT  INTO @tbl (colx) VALUES('a')
INSERT  INTO @tbl (colx) VALUES('b')
INSERT  INTO @tbl (colx) VALUES('c')
INSERT  INTO @tbl (colx) VALUES('d')

IF @checkvar  is null  select colx INTO #temp1 FROM @tbl
ELSE select colx INTO #temp1 FROM @tbl WHERE colx =@checkvar


错误是:数据库中已经有一个名为“#temp1”的对象。

有没有解决这个问题的优雅方法?
如果@checkvar为null,我想要整个表
否则,只给我其中@checkvar =某物的值

编辑:该列是varchar,而不是int。

最佳答案

您不能只重写语句吗?

SELECT colx INTO #temp1 FROM @tbl WHERE (@checkvar IS NULL) OR (colx = @checkVar)

07-28 14:23