WEB开发网
开发学院数据库MSSQL Server 带你深入了解T-SQL的十一种设计模式 阅读

带你深入了解T-SQL的十一种设计模式

 2008-09-04 10:00:41 来源:WEB开发网   
核心提示: 1、传送返回码 create PROC procCASIF OBJECT_ID(’no_exist’) IS NOT NULLselect * FROM no_existELSERETURN (-1)GOcreate PROC procBASDECLARE @res

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

上一页  1 2 3 4 5 6 7 8  下一页

Tags:深入 了解 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接