我有一个存储过程可能由于多种原因而失败:
就“最佳做法”而言,我应该使用错误状态或错误消息来通知最终用户此问题吗?
我知道状态用于指示实际代码中发生错误的位置,但对于最终用户而言,如果没有某种文档,它就无用。
在sys.messages
中输入一个条目似乎对于数据库中每个存储过程/触发器的每个可能的失败案例都是过度的。
我应该这样做:
THROW 50001, 'Parameter value cannot be 0', 1
THROW 50002, 'Matching value not found in table A', 1
THROW 50003, 'Matching value not found in table B', 1
THROW 50004, 'Combination of values already exists in table C.', 1
或者这个:
THROW 50001, 'An error occurred in the procedure.', 1
THROW 50001, 'An error occurred in the procedure.', 2
THROW 50001, 'An error occurred in the procedure.', 3
THROW 50001, 'An error occurred in the procedure.', 4