为什么 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为空,我想要整个表 否则,只给我 @checkvar = some 的值
编辑:该列是 varchar,而不是 int。
最佳答案
您可以使用 WHERE 1=0
创建具有所需结构的空临时表。然后用您的原始代码插入所需的记录
SELECT colx INTO #temp1
FROM @tbl
WHERE 1 = 0 // this is never true
IF @checkvar IS NULL
BEGIN
INSERT INTO #temp1 (colName)
SELECT colx FROM @tbl
END
ELSE
BEGIN
INSERT INTO #temp1 (colName)
SELECT colx
FROM @tbl
WHERE colx = @checkvar
END
关于sql - 在 IF .. ELSE 语句中使用临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/712731/