执行输出参数sql server

时间:2014-09-21 12:07:50

标签: sql-server stored-procedures join parameters

我有三个参数@codetable1.column1的任何元素,@date是元素table2.column2的日期,@total是输出参数显示元素table2.column2的显示时间。

我想执行一个程序,向我展示table1.column1table2.column1date_column之间的内部联接;仅在参数引入@date之前的日期。

并返回@total

中的选择行数
create procedure pro1
    @code int, 
    @date datetime, 
    @total smallint OUTPUT
as
    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

2 个答案:

答案 0 :(得分:0)

在SQL Server中,在select语句中,您不能将值赋值给变量并返回数据,因此您需要执行此查询两次,一次返回您期望的数据,一次为{分配值} {1}}参数。

@Total

答案 1 :(得分:0)

如果我正确地读了你,@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