如何将select语句的结果存储到变量中?
问题描述:
我试着用下面的代码:如何将select语句的结果存储到变量中?
DECLARE @rec_count int
Set @rec_count= select 1
,但它显示错误
“选择附近有语法错误”。
答
或者:
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
答
要存储select
语句转换成一个变量的结果,请参见下面
DECLARE @rec_count INT
SELECT @rec_count = 1
我们可以从select语句中得到多个值如下
DECLARE @rec_count INT
DECLARE @date DATETIME
SELECT @rec_count = 1, @date = GETDATE()
答
如果你想获得一个记录计数,它看起来像你想做什么,你可以这样做:
declare @rec_count int
select @rec_count = count(1) from [your_table] -- where some condition is met
注:使用count(1)
,而不是count(*)
,因为它的速度更快在计数时简单地选择一列。
或者,如果这个数是一些插入的结果/更新/选择/删除,你可以使用@@ROWCOUNT,其中:
返回受上一语句的行数。
所以,例如,如果你执行的是update
或select
,想知道有多少行受到影响,它会自动通过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
你需要更具体。您是否试图从单一行(即行数)存储单个标量值?或者你是否试图存储多个列和/或行?每个问题的答案是不同的,到目前为止,人们只是回答与单个标量值相关的问题。那么,你想完成什么? – 2014-10-16 14:32:44