了解SQL SErver存储过程

时间:2013-09-12 10:22:09

标签: sql-server tsql stored-procedures

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:请不要理会逻辑。我只是想了解一个非常简单的存储过程。谢谢。

1 个答案:

答案 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