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

上記のコードは、tableA に 9 行のレコードがあるため、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 に答える