2014-06-09 245 views
1

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

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

我把这样的过程:

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

你可能要检查这个 检查这个http://stackoverflow.com/questions/14810037/get-return-value-from-stored-procedure-in-asp-net – Umesh

回答

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(), 
     [email protected] = ERROR_SEVERITY(), 
     @ErrorState = ERROR_STATE(); 

    RAISERROR (@ErrorMessage, -- Message text. 
       16, [email protected],-- Severity. 
       @ErrorState -- State. 
       ); 
END CATCH; 

请注意,我已经明确设置严重性16,从而引发错误代码。