2011-02-25 36 views
10

我如何將選擇列存儲在變量中?我如何將選擇列存儲在變量中?

試試這個,但我扔一個錯誤的語法不正確

declare @EmpId int 
SELECT dbo.Employee.Id as @EmpId FROM dbo.Employee 
+0

如果其他的答案是沒有幫助,因爲要處理多個行,這將有助於瞭解你想用EmpIds做什麼。 – Xoltar 2011-02-26 08:52:43

回答

35
select @EmpID = ID from dbo.Employee 

或者

集@EmpID =(從dbo.Employee選擇ID)

注意選擇查詢可能會返回多個值或多個行。因此您可以編寫一個必須返回一行的選擇查詢。

如果你想添加更多的列到一個變量(MS SQL),還有就是用定義表變量

DECLARE @sampleTable TABLE(column1 type1) 
INSERT INTO @sampleTable 
SELECT columnsNumberEqualInsampleTable FROM .. WHERE .. 

由於表類型變量不甲骨文等公司存在的一個選項,你必須定義它:

DECLARE TYPE type_name IS TABLE OF (column_type | variable%TYPE | table.column%TYPE [NOT NULL] INDEX BY BINARY INTEGER; 

- 然後宣佈這種類型的表變量:variable_name type_name;

- 將值分配給TABLE變量:variable_name(n).field_name := 'some text';

- 其中「n」是指數值

+0

消息141,級別15,狀態1,行19 將值賦給變量的SELECT語句不能與數據檢索操作結合使用。 – 2011-02-25 18:01:03

+0

@Abu - 您需要將選擇列表中的所有**列分配給變量。您不能將正常的選擇與返回結果的客戶端分配給變量。不過,你可以明顯地在'SELECT @ var1作爲somecol,@ var2作爲anothercol'。 – 2011-02-25 18:06:45

+0

你可以這樣做,選擇五列,但只有一個放入臨時變量? – Casey 2017-12-22 14:41:10

1

這是如何將一個值分配給一個變量:

SELECT @EmpID = Id 
    FROM dbo.Employee 

然而,上面的查詢將返回一個以上的值。您需要添加WHERE子句才能返回單個Id值。

2

假設這樣的查詢將返回單行,你可以使用任何

select @EmpId = Id from dbo.Employee 

或者

set @EmpId = (select Id from dbo.Employee) 
+1

如果我有多個單行,該怎麼辦?你將如何處理 – 2011-02-25 18:01:45

+0

@Abu Hamzah:你不能。一個變量只能保存一個值。如果查詢返回多行,您希望將哪個值放入變量中? – 2011-02-25 18:02:46

+0

在我的情況我有2列名稱,我應該持有1)EmpId,2)RegId - 它可能有多個行或只有一行,我在一個變量與其他人比較...不知道這是否是正確的做法。 – 2011-02-25 18:08:19

相關問題