0

我有一个存储过程

create procedure p1
    @id  INT,
    @name varchar(20) OUTPUT
as
begin
    select @name = name 
    from table1 
    where id = @id;
end

在执行它时,我只需将 1 行作为值。

但是,如果我不使用输出参数作为

create procedure p1
   @id  INT
as
begin
    select name from table1 where id = @id;
end

我得到了整个专栏。注意:在我的表中,单个 id 可以有多个值,因此理想情况下,即使使用OUTPUT参数,它也应该返回 > 1 个值。

为什么我在使用OUTPUT参数时只得到 1 行。

4

1 回答 1

2

实际上,您不会获得“一行”,而是通过输出参数获得一个标量值,因为这就是您声明其类型的内容。varchar 是一种标量值类型。如果你想要一个行集,你不需要为它使用参数。

于 2013-08-02T16:02:55.313 回答