带你深入了解T-SQL的十一种设计模式
2008-09-04 10:00:41 来源:WEB开发网1、传送返回码
create PROC procC
AS
IF OBJECT_ID(’no_exist’) IS NOT NULL
select * FROM no_exist
ELSE
RETURN (-1)
GO
create PROC procB
AS
DECLARE @res int
exec @res = procC
RETURN (@res)
GO
create PROC procA
AS
DECLARE @res int
exec @res = procB
select @res
GO
exec procA
注:上述代码使用了存储过程的结果代码从过程向过程传递原始返回码的方法,即A调用B,B又调用C,C运行时如出现了错误,则将错误代码-1传送给A。
2、通过输出参数传送消息
create PROC procC
@msg varchar(128) OUT
AS
IF OBJECT_ID(’no_exist’) IS NOT NULL
select * FROM no_exist
ELSE
SET @msg = ’Table dosen’’t exist!’
GO
create PROC procB
@msg varchar(128) OUT
AS
exec procC @msg OUT
GO
create PROC procA
AS
DECLARE @msg varchar(128)
exec procB @msg OUT
select @msg
GO
exec procA
注:可以使用任何数据类型(包括游标)来返回任何想要的信息
3、传送真实错误代码
create PROC procC
AS
DECLARE @err int
IF @@TRANcount = 0 --此全局变量返回当前连接的活动事务数
ROLLBACK TRAN --有意设置的出错语句,因未使用BEGIN TRANSACTION语句
SET @err = @@ERROR
RETURN (@err)
GO
create PROC procB
AS
DECLARE @res int
exec @res = procC
RETURN (@res)
GO
create PROC procA
AS
DECLARE @res int
exec @res = procB
select @res
GO
exec procA
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接