存储过程中的代码,是否可以“重构”呢?
我感觉SQL SERVER中的存储过程之间没有太大的联系,不像其他高级语言一样,可以有子过程、函数、方法等等。这样导致存储过程中会出现大量类似的代码。。。
例如,我的一个应用系统中,包含下面片断的代码和N多处:
--检查账户类型
Select (...)
IF @@RowCount=0
Begin
Set @RetMsg='指定的账户类型不存在! '
Return(1)
End
(返回一个错误,@RetMsg提示信息将会显示在客户端)
还有带RollBack的:
Begin Tran
Insert Into (...)
IF (@@Error!=0)
Begin
Set @RetMsg='添加记录基本信息时发生错误!请联系管理员。 '
RollBack Tran
Return(1)
End
这样的片断实在是太多了,Begin...End之间的代码几乎是完成同样的事情。我想,是否有办法将这部分优化,将Begin...End之间的代码放到一个过程中完成呢?就是类似以下的代码:
Select (...)
IF @@RowCount=0
ErrorReturn('指定的账户类型不存在! ',1) --返回错误代码1,并返回一个错误提示
或者:
Begin Tran
Insert Into (...)
IF (@@Error!=0)
ErrorRollBack('添加记录基本信息时发生错误!请联系管理员。',1) --返回错误代码1和一个错误提示,并回滚
谢谢!