我无法使InputOutput方向适用于Azure Sql上的存储过程

时间:2013-08-12 19:31:04

标签: stored-procedures azure-sql-database

我在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#尝试什么,我都没有成功地给它一个参数并再次修改它。

我觉得这应该可行,但事实并非如此。

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

当我在执行后检查参数时,它与发送时的参数相同。

我认为必须有一些我错过的东西。

0 个答案:

没有答案