Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server if语句中的临时表_Sql Server_Tsql - Fatal编程技术网

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上解决这个问题吗?无论如何,你可能忘了在选择后将其移到@诱惑中。。。在这两个查询中。