2017-05-23 60 views
0

我想設置@inputData作爲SELECT語句的行,然後將它傳遞到我的DoSomething存儲過程:必須聲明標量變量 - 變量設置爲等於SELECT語句

DECLARE @inputData [dbo].[TestTableType]; 

SET @inputData = ( 
    SELECT 
     1 AS Client_Id, 
     20170202 AS a, 
     18595 AS b, 
     49.82 AS c, 
     88 AS d, 
     31 AS e, 
     0.67 AS f, 
     0 AS g, 
     44 AS h, 
     1827 AS i, 
     5 AS j, 
     87 AS k 
); 

EXEC DoSomething @inputData; 

但我得到這個錯誤:

Msg 137, Level 16, State 1, Line 3
Must declare the scalar variable "@inputData".

我在做什麼錯?

+1

注肯定,也許嘗試'插入@inputData選擇...' – user1429080

+0

感謝@ user1429080完美的作品! – Jimmyt1988

回答

4

你不要SET表變量。您INSERT放進去:

INSERT INTO @inputData /* Should have column list here also */ 
SELECT 
     1 AS Client_Id, 
     20170202 AS a, 
     18595 AS b, 
     49.82 AS c, 
     88 AS d, 
     31 AS e, 
     0.67 AS f, 
     0 AS g, 
     44 AS h, 
     1827 AS i, 
     5 AS j, 
     87 AS k 
; 
+0

謝謝,完美無缺! – Jimmyt1988

1

嘗試使用INSERT INTO。將表類型看作字面上的臨時表(它基本上是)。

DECLARE @inputData AS TestTableType 

INSERT INTO @inputData 
SELECT 
    1 AS Client_Id, 
    20170202 AS a, 
    18595 AS b, 
    49.82 AS c, 
    88 AS d, 
    31 AS e, 
    0.67 AS f, 
    0 AS g, 
    44 AS h, 
    1827 AS i, 
    5 AS j, 
    87 AS k 
); 
+0

我似乎得到同樣的問題。平心而論,我的用戶定義表類型實際上稱爲dbo.TestTableType – Jimmyt1988

+0

謝謝,INSERT INTO工作:) – Jimmyt1988