我有一个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
答案 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,因此会向代码抛出错误。