Sql server 执行输出参数sql server
我有三个参数@code是table1.column1的any元素,@date是table2.column2元素的日期,@total是一个输出参数,显示table2.column2元素出现的时间 我想执行一个过程,显示table1.column1和table2.column1之间的内部连接以及date_列;仅在引入@date参数之前的日期 并返回@total中的选定行和Sql server 执行输出参数sql server,sql-server,stored-procedures,join,parameters,Sql Server,Stored Procedures,Join,Parameters,我有三个参数@code是table1.column1的any元素,@date是table2.column2元素的日期,@total是一个输出参数,显示table2.column2元素出现的时间 我想执行一个过程,显示table1.column1和table2.column1之间的内部连接以及date_列;仅在引入@date参数之前的日期 并返回@total中的选定行和 在SQL Server中,在select语句中,不能为变量赋值,也不能返回数据,因此需要执行此查询两次,一次返回预期返回的数据,
在SQL Server中,在select语句中,不能为变量赋值,也不能返回数据,因此需要执行此查询两次,一次返回预期返回的数据,一次为@Total参数赋值
create procedure pro1
@code int
,@date datetime
,@total int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
select table1.column1
, table2.date_column
from table1
inner join table2 on table1.column1 = table2.column2
where table1.column1 = @code
and CAST(table2.date_column AS DATE) = @date
and table2.date_column <= @date
select @total = SUM(table1.column1)
from table1
inner join table2 on table1.column1 = table2.column2
where table1.column1 = @code
and CAST(table2.date_column AS DATE) = @date
and table2.date_column <= @date
END
如果我没看错的话,@total只是返回的行数。如果确实如此,那么您就不必重复查询,也不必处理并发问题,例如在查询之间修改的数据:
create procedure pro1
(
@code int, @date datetime, @total smallint OUTPUT
)
as
begin
select
table1.column1,
table2.date_column
from
table1
inner join
table2 on table1.column1 = table2.column2
where
table1.column1 = @code
and
table2.date_column = @date
and
@date <= table2.date_column;
set @total = @@rowcount;
end
你说的是行的总和,你能澄清一下吗?您是指某些列的总和还是行数?谢谢您的帮助,只显示日期参数而不是以前的日期。谢谢!!,使用rowcount函数非常有用。
create procedure pro1
(
@code int, @date datetime, @total smallint OUTPUT
)
as
begin
select
table1.column1,
table2.date_column
from
table1
inner join
table2 on table1.column1 = table2.column2
where
table1.column1 = @code
and
table2.date_column = @date
and
@date <= table2.date_column;
set @total = @@rowcount;
end