0

Azure SQL で次のストアド プロシージャを作成しました。

ALTER PROCEDURE [dbo].[Composite_Shop_GetNextOrdreNo]
    @OrderPrefix NVARCHAR(50) OUTPUT,
    @IsTestMode int = 0
AS
    DECLARE @NextOrderNumber int

    IF NOT EXISTS (SELECT TOP 1 [OrderPrefix] 
                   FROM [dbo].[Composite_Shop_OrderNumber] 
                   WHERE [OrderPrefix] = @OrderPrefix)
    BEGIN
        INSERT INTO [dbo].[Composite_Shop_OrderNumber] (OrderPrefix) 
        VALUES (@OrderPrefix)
    END

    UPDATE [dbo].[Composite_Shop_OrderNumber] WITH (READCOMMITTEDLOCK)
    SET @NextOrderNumber = Number = Number + 1
    WHERE [OrderPrefix] = @OrderPrefix

    SELECT @OrderPrefix = @OrderPrefix +  REPLICATE('0', 6 - LEN(RTRIM(CONVERT(nvarchar(50), @NextOrderNumber)))) + CONVERT(nvarchar(50), @NextOrderNumber)

    RETURN

C# から何を試しても、1 つのパラメーターを指定して再度変更することに成功しませんでした。

直感的にはこれでうまくいくと思いますが、そうではありません。

var param = new SqlParameter("@OrderPrefix",SqlDbType.NVarChar);
param.value = "test";
param.Direction = ParameterDirection.InputOutput;
cmd.Parameters.Add(param);

実行後にパラメーターを確認すると、送信時と同じです。

私が見逃した何かがあるに違いないと思います。

4

0 に答える 0