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

4

1 回答 1

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

于 2013-09-12T10:23:42.857 回答