0

以下に示すようなストアドプロシージャがあります。

ALTER PROCEDURE [dbo].[CreateNewLeague]
    -- Add the parameters for the stored procedure here
    @UserId uniqueidentifier,
    @LeagueName VARCHAR(256),
    @leagueId Int OUTPUT,
    @teamId Int OUTPUT

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SELECT @teamId = [teamID] FROM [UserTeam] WHERE (userID = @UserId)

    RETURN @teamID
END

BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    INSERT INTO League([leagueAdminID], [leagueName]) VALUES (@UserId, @LeagueName)
    SELECT SCOPE_IDENTITY()

    Set @leagueId = SCOPE_IDENTITY()

    RETURN @leagueId
END



BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    INSERT INTO LeagueTeam([leagueID], [teamID]) VALUES (@leagueId, @teamID)

END

私の問題は、SPROC を実行したときに両方の戻り値を取得できないことです。最初に入力した値の戻り値しか取得できません。どちらも最初に配置すると機能しますが、2 番目は NULL の値を返します。

私が間違っていることは何ですか?

前もって感謝します

4

3 に答える 3

1

「Return」はストアドプロシージャの実行を停止するため、2番目の部分は実行されません。「return」ステートメントを省略し、出力変数を読み取ります。すでに値を設定しています。

于 2013-03-06T10:59:34.947 に答える
0

出力パラメーターを使用している場合は、変数を設定するだけで戻り値を使用しないでください。元。SET @チームID = 10

于 2013-03-06T11:02:43.740 に答える
0

戻り値の代わりに値を設定します..

于 2013-03-06T11:02:54.893 に答える