从Proc获取RETURN值

时间:2014-06-09 05:22:41

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

我有一个SQL Server过程,它返回一个结果集,并且运行良好。我正在添加错误处理(TRY / CATCH),如果发生错误,想要RETURN -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

1 个答案:

答案 0 :(得分: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;

请注意,我已将severity严格设置为16,因此会向代码抛出错误。