读书人

如何获取存储过程里边的错误

发布时间: 2012-09-19 13:43:53 作者: rapoo

怎么获取存储过程里边的异常
主键是:MedicalNo 、DeptID 、AppointTime 、PeriodID ,怎么获取主键插入异常? 我插入同一记录,存储过程只是回滚,并没有报错


SQL code
CREATE PROCEDURE P_Appoint @MedicalNo NVarChar (50),@MedicalName NVarChar (50),@DeptID NVarChar (50),@PeriodID NVarChar (50),@AppointTime datetime,@ManCreate NVarChar (50),@TimeCreate datetime,@ShiftID NVarChar (50),@Remarks NVarChar (100),@Descript NVarChar (100),@SNO  NVarChar (50) outputASdeclare  @Counter  intset xact_abort on                                         --这样写,当一个有错误的时候会回滚整个事务begin transelect top 1  @Counter=SerialNO from SerialList           ---取得序列号set @counter=@counter+1                                   ---序列号+1update SerialList set SerialNO=@counter                   ---更新SerialListset @SNO=convert(char(8),getdate(),112) + 'LW' + right(@counter+100000000,8)   --日期+序列号insert into AppointList(MedicalNo,MedicalName, DeptID,PeriodID,AppointTime,ManCreate,TimeCreate,ShiftID,SNO,Remarks,Des)values(@MedicalNo,@MedicalName, @DeptID,@PeriodID,@AppointTime,@ManCreate,@TimeCreate,@ShiftID,@SNO,@Remarks,@Descript)commit tranGO


[解决办法]
探讨
主键是:MedicalNo 、DeptID 、AppointTime 、PeriodID ,怎么获取主键插入异常? 我插入同一记录,存储过程只是回滚,并没有报错


SQL code

CREATE PROCEDURE P_Appoint
@MedicalNo NVarChar (50),
@MedicalName NVarChar (50),
@DeptID NVarChar (50……

[解决办法]
我建议你应该判断后再插入,而不是去获取这个错误.

主键是:MedicalNo 、DeptID 、AppointTime 、PeriodID ,怎么获取主键插入异常? 我插入同一记录,存储过程只是回滚,并没有报错


if not exists(select 1 from tb where MedicalNo = ... and DeptID = ... and AppointTime = ... and PeriodID = ... )
insert 数据
else
提示主键重复

读书人网 >SQL Server

热点推荐