Sql server if语句中的临时表
发现数据库中已经有一个名为“诱惑”的对象。有办法解决这个问题吗?表格变量是否适合您的需要。。。我更喜欢这些,因为这些范围问题Sql server if语句中的临时表,sql-server,tsql,Sql Server,Tsql,发现数据库中已经有一个名为“诱惑”的对象。有办法解决这个问题吗?表格变量是否适合您的需要。。。我更喜欢这些,因为这些范围问题 IF @someVariable = 0 BEGIN SELECT * INTO #TempTable FROM MyTable WHERE Category="Something" END ELSE BEGIN SELECT * INTO #TempTable FROM MyTable WHERE Ca
IF @someVariable = 0
BEGIN
SELECT *
INTO #TempTable
FROM MyTable
WHERE Category="Something"
END
ELSE
BEGIN
SELECT *
INTO #TempTable
FROM MyTable
WHERE Category="SomethingElse"
END
DROP TABLE #TempTable
或者,您是否试图避免显式定义列?您能否重构以预先确定条件:
DECLARE @TempTable TABLE (
-- Your definition
)
IF @someVariable = 0
BEGIN
INSERT INTO @TempTable (...)
SELECT ...
FROM MyTable
WHERE Category="Something"
END
ELSE
BEGIN
INSERT INTO @TempTable (...)
SELECT ...
FROM MyTable
WHERE Category="SomethingElse"
END
表格变量是否适合您的需要。。。我更喜欢这些,因为这些范围问题
IF @someVariable = 0
BEGIN
SELECT *
INTO #TempTable
FROM MyTable
WHERE Category="Something"
END
ELSE
BEGIN
SELECT *
INTO #TempTable
FROM MyTable
WHERE Category="SomethingElse"
END
DROP TABLE #TempTable
或者,您是否试图避免显式定义列?您能否重构以预先确定条件:
DECLARE @TempTable TABLE (
-- Your definition
)
IF @someVariable = 0
BEGIN
INSERT INTO @TempTable (...)
SELECT ...
FROM MyTable
WHERE Category="Something"
END
ELSE
BEGIN
INSERT INTO @TempTable (...)
SELECT ...
FROM MyTable
WHERE Category="SomethingElse"
END
这是可行的,但取决于您可能需要代码执行的其他操作,这可能不是最佳解决方案;但在您的示例代码中,它解决了这个问题
或者:
IF @someVariable = 0
BEGIN
SELECT *
INTO #TempTable1
FROM MyTable
WHERE Category="Something"
DROP TABLE #TempTable1
END
ELSE
BEGIN
SELECT *
INTO #TempTable2
FROM MyTable
WHERE Category="SomethingElse"
DROP TABLE #TempTable2
END
这是可行的,但取决于您可能需要代码执行的其他操作,这可能不是最佳解决方案;但在您的示例代码中,它解决了这个问题
或者:
IF @someVariable = 0
BEGIN
SELECT *
INTO #TempTable1
FROM MyTable
WHERE Category="Something"
DROP TABLE #TempTable1
END
ELSE
BEGIN
SELECT *
INTO #TempTable2
FROM MyTable
WHERE Category="SomethingElse"
DROP TABLE #TempTable2
END
可能重复的原因是什么?可能重复的原因是什么?但不一定是表变量。同样的方法也适用于临时表。那么您想做什么呢。。。只需要明确声明列定义就可以了?你是想在OP上解决这个问题吗?无论如何,你可能忘了在选择后将其移到@诱惑中。。。在这两个查询中,它不必是表变量。同样的方法也适用于临时表。那么您想做什么呢。。。只需要明确声明列定义就可以了?你是想在OP上解决这个问题吗?无论如何,你可能忘了在选择后将其移到@诱惑中。。。在这两个查询中。