2009-02-02 87 views
0

我在這裏做錯了什麼?我對INTO子句的使用似乎與我在Microsoft的Transact-SQL參考頁面中找到的示例相匹配,但我必須缺少一些東西。Transact-Sql INTO子句語法

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 

回答

6

不能使用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 
+0

這是臨時表和表變量之間的許多關鍵區別之一 – 2009-02-02 18:02:18

1

您不能在SELECT INTO中使用表變量。改用#temp表。

0

什麼喬說。另外,INTO創建一個新表格。由於此表已存在(您剛剛創建它),因此該語句失敗。

1

表變量不能與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