2014-10-16 125 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 
相关问题