【问题标题】:Get RETURN value from Proc从 Proc 获取 RETURN 值
【发布时间】:2014-06-09 05:22:41
【问题描述】:

我有一个返回结果集的 SQL Server 过程,并且运行良好。我正在添加错误处理(TRY/CATCH),如果发生错误,希望返回 -1 以指示问题(或另一个负整数可能知道失败的原因)。

有没有办法从过程调用中获取返回值(以及结果集,如果需要)?

我这样调用程序:

Context.project_scheduled_event_payments(st.id);

在这种情况下,我没有得到结果集,因为我不需要。但我想知道 proc 返回的是否为 NULL(一切正常),还是表示问题的负数:

IF(@EndDate IS NOT NULL)
              BEGIN
            BEGIN TRY
                UPDATE scheduled_event_transaction 
                    SET Deleted = GETUTCDATE(),
                        lastupdateuser = 0, 
                        lastupdatedate = GETUTCDATE() 
                WHERE Scheduled_Event_ID = @scheduled_event_id 
                AND scheduled_payment_date > @EndDate
            END TRY
            BEGIN CATCH
                ROLLBACK
                RETURN -1
            END CATCH
        END
            RETURN -- Success

【问题讨论】:

标签: sql-server entity-framework stored-procedures


【解决方案1】:

根据 SystemOnline 的建议,请参考get-return-value-from-stored-procedure-in-asp-net

但我建议在 C#/vb 代码中抛出错误并捕获,例如:

BEGIN TRY
 ...

END TRY
BEGIN CATCH
    DECLARE @ErrorMessage NVARCHAR(4000);
    DECLARE @ErrorSeverity INT;
    DECLARE @ErrorState INT;

    SELECT 
        @ErrorMessage = ERROR_MESSAGE(),
        --@ErrorSeverity = ERROR_SEVERITY(),
        @ErrorState = ERROR_STATE();

    RAISERROR (@ErrorMessage, -- Message text.
               16, --@ErrorSeverity,-- Severity.
               @ErrorState -- State.
               );
END CATCH;

请注意,我已将严重性明确设置为 16,以便向代码抛出错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2014-03-17
    相关资源
    最近更新 更多