2014-06-09 196 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,從而引發錯誤代碼。