代码之家  ›  专栏  ›  技术社区  ›  Tony Peterson

Transact-Sql INTO子句语法

  •  0
  • Tony Peterson  · 技术社区  · 16 年前

    我做错了什么?我对INTO子句的使用似乎与我在Microsoft的Transact-SQL参考页中找到的示例相匹配,但我肯定遗漏了什么。

    DECLARE @rowtemp table(TestRunID int, RunOrder int)
    
    SELECT TestRunID, ROW_NUMBER() OVER (ORDER BY TestRuns.TestTime ASC) 
    AS 'RunOrder' INTO @rowtemp FROM TestRuns WHERE RunID = @runID
    
    4 回复  |  直到 16 年前
        1
  •  6
  •   SQLMenace    16 年前

    不能将SELECT INTO与表变量一起使用,而且SELECT INTO会创建一个表,因此不会先创建表

    试试这个

    DECLARE @rowtemp table(TestRunID int, RunOrder int)
    
    INSERT INTO  @rowtemp
    SELECT TestRunID, ROW_NUMBER() OVER (ORDER BY TestRuns.TestTime ASC) 
    AS 'RunOrder'  FROM TestRuns WHERE  RunID = @runID
    
        2
  •  1
  •   Joe    16 年前

        3
  •  1
  •   lnediger    16 年前

    表变量不能与SELECT INTO一起使用,您可以使用#temp表或稍微重新排列语句以进行读取。

    DECLARE @rowtemp table(TestRunID int, RunOrder int)
    
    INSERT INTO @rowtemp 
     SELECT 
      TestRunID, 
      ROW_NUMBER() OVER (ORDER BY TestRuns.TestTime ASC) AS 'RunOrder' 
    FROM 
     TestRuns 
    WHERE 
     RunID = @runID
    
        4
  •  0
  •   Joel Coehoorn    16 年前

    乔说的。另外,INTO将创建一个新表。因为这个表已经存在(您刚刚创建了它),所以语句失败。