Create PROCEDURE alertCount
(
@field1 VARCHAR(200),
@field2 INT,
@field3 INT,
@field4 INT,
@field5 INT,
@field6 INT,
@noOfCount INT OUT
)
AS
BEGIN
SELECT @noOfCount = COUNT(*) from tableA
END
我对存储过程很新,基于一些教程,上面的代码帮助我创建一个过程(我希望它工作正常)。
Declare @noOfCount as INT
Exec alertCount asd, 1, 1, 1, 1, 1, @noOfCount
select @noOfCount
现在上面的代码假设返回9,因为我的tableA中有9行记录,但它返回了我null
。我可以知道它有什么问题吗?
P / S:请不要理会逻辑。我只是想了解一个非常简单的存储过程。谢谢。
答案 0 :(得分:6)
您必须使用out
(或output
关键字)
Declare @noOfCount as INT
Exec usp_AlertCount asd, 1, 1, 1, 1, 1, @noOfCount out
select @noOfCount
从我的经验来看,按名称传递参数(更容易维护)也更好:
declare @noOfCount int
exec usp_AlertCount
@field1 = 'asd',
@field2 = 1,
@field3 = 1,
@field4 = 1,
@field5 = 1,
@field6 = 1,
@noOfCount = @noOfCount output
select @noOfCount
<强> sql fiddle demo 强>