存储过程 - 打印

时间:2015-04-13 10:54:53

标签: sql sql-server

create procedure [dbo].[basic_und6] (@name varchar(500), @email varchar(500), @result int out)
as 
begin

Select @result=COUNT(*) from tbl_Students 
where Firstname= @name and Email=@email
print @result
end

下面给出了我运行以执行存储过程的查询

**declare @result1 int
execute basic_und6 Amit,'amit@abc.com',@result1 
print @result1**

我得到结果为1。

但根据我的理解,它应该显示两个1&#39>

第一个来自存储过程打印,第二个来自具有print语句的查询。

2 个答案:

答案 0 :(得分:2)

将执行语句修改为:

declare @result1 int
execute basic_und6 Amit,'amit@abc.com', @result1 OUTPUT
print @result1

这是因为您没有指定必须返回输出值的变量。调用语句必须通过显式使用OUTPUT关键字来完成此操作。更多信息here

  

如果在过程定义中为参数指定OUTPUT关键字,则存储过程可以在存储过程退出时将参数的当前值返回给调用程序。要将参数值保存在可在调用程序中使用的变量中,调用程序在执行存储过程时必须使用OUTPUT关键字。

答案 1 :(得分:0)

不,它只会显示一个1 当我们在变量中选择一个值时,行计数将不会显示