2014-10-16 167 views
0

我試着用下面的代碼:如何將select語句的結果存儲到變量中?

DECLARE @rec_count  int 
Set @rec_count= select 1 

,但它顯示錯誤

「選擇附近有語法錯誤」。

+0

你需要更具體。您是否試圖從單一行(即行數)存儲單個標量值?或者你是否試圖存儲多個列和/或行?每個問題的答案是不同的,到目前爲止,人們只是回答與單個標量值相關的問題。那麼,你想完成什麼? – 2014-10-16 14:32:44

回答

-2
DECLARE @rec_count int; 
Set @rec_count = 1; 
+0

_如何將select語句的結果存儲到變量中?_此答案不使用任何select語句。 – jpw 2014-10-16 13:21:25

+0

它更正了語法錯誤。不需要SELECT將變量的值設置爲1。 – 2014-10-16 13:22:39

+0

問題標題顯示「select語句的結果」 – DavidG 2014-10-16 13:23:27

3

或者:

set @rec_count = (select 1) 

select @rec_count = 1 

一個例子從表中分配計數變量:

set @rec_count = (select COUNT(*) from master..spt_values) 
select @rec_count = COUNT(*) from master..spt_values 

但是,如果舉ST要分配給一個變量,你不需要任何select語句的值:

set @rec_count = 1 

declare @rec_count int = 1 
+0

請問您是否精心設計了什麼是spt_values? – Priyanka 2014-10-16 13:26:52

+0

@ user3868487這是一個系統表;這並不重要,我只是用它作爲例子 - 它可以是任何表格或任何你想分配的東西。 – jpw 2014-10-16 13:28:31

+0

爲什麼downvote?我的答案中有任何不正確的地方嗎? – jpw 2014-10-16 13:29:21

0

要存儲select語句轉換成一個變量的結果,請參見下面

DECLARE @rec_count INT 
SELECT @rec_count = 1 

我們可以從select語句中得到多個值如下

DECLARE @rec_count INT 
DECLARE @date DATETIME 

SELECT @rec_count = 1, @date = GETDATE() 
0

如果你想獲得一個記錄計數,它看起來像你想做什麼,你可以這樣做:

declare @rec_count int 
select @rec_count = count(1) from [your_table] -- where some condition is met 

注:使用count(1),而不是count(*),因爲它的速度更快在計數時簡單地選擇一列。

或者,如果這個數是一些插入的結果/更新/選擇/刪除,你可以使用@@ROWCOUNT,其中:

返回受上一語句的行數。

所以,例如,如果你執行的是updateselect,想知道有多少行受到影響,它會自動通過SQL Server中的@@ROWCOUNT存儲。

declare @rec_count int 

-- some table change 
update your_table 
set col1 = 1 
where col1 = 0 

set @rec_count = @@ROWCOUNT 
-- select @@ROWCOUNT <-- this would return the number of rows updated 
相關問題