我有三个参数@code
是table1.column1
的任何元素,@date
是元素table2.column2
的日期,@total
是输出参数显示元素table2.column2
的显示时间。
我想执行一个程序,向我展示table1.column1
和table2.column1
与date_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
答案 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