T-SQL存储过程中try和catch以及错误处理的用法例子

来源:互联网 发布:怪物猎人ol 数据库 编辑:程序博客网 时间:2024/06/07 05:18
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo-- =============================================-- Author:<Author,,Name>-- Create date: <Create Date,,>-- Description:<Description,,>-- =============================================ALTER PROCEDURE [dbo].[ImportPlatformParam] -- Add the parameters for the stored procedure here@mOrderID_Source nvarchar(64),@mProjVersion_Source nvarchar(2),@mOrderID_Target nvarchar(64),@mProjVersion_Target nvarchar(2)ASDECLARE @SQLStr nvarchar(4000), @count intBEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;    -- Insert statements for procedure hereSET XACT_ABORT ON;BEGIN TRYBEGIN TRAN--删除目标平台的平台参数DELETE FROMUDSGKS_ProjPlatformParamMapWHEREOrderID = @mOrderID_Target ANDProjVersion = @mProjVersion_Target--删除目标平台的平台非标点DELETE FROMUDSGKS_ProjNSListWHEREOrderID = @mOrderID_Target ANDProjVersion = @mProjVersion_Target--导入源平台的平台参数到目标平台INSERT INTOUDSGKS_ProjPlatformParamMap(OrderID, ProjVersion, PlatformParamName, PlatformParamValue,PlatformParamDesc, PlatformParamType, FileName)SELECT@mOrderID_Target AS OrderID,@mProjVersion_Target AS ProjVersion,PlatformParamName, PlatformParamValue,PlatformParamDesc, PlatformParamType, FileNameFROMUDSGKS_ProjPlatformParamMapWHEREOrderID = @mOrderID_Source ANDProjVersion = @mProjVersion_Source--导入源平台的非标难度时间到目标平台DELETE FROMUDSGKS_ProjDifficulty WHEREOrderID = @mOrderID_Target ANDProjVersion = @mProjVersion_TargetINSERT INTOUDSGKS_ProjDifficultySELECT@mOrderID_Target AS OrderID, @mProjVersion_Target AS ProjVersion,PDPeriod, PRPeriod, MDPeriod, MRPeriod, LDPeriod, LRPeriodFROMUDSGKS_ProjDifficultyWHEREOrderID = @mOrderID_Source ANDProjVersion = @mProjVersion_Source--导入源平台的平台非标点到目标平台INSERT INTOUDSGKS_ProjNSList(OrderID, ProjVersion, NSID, NSFuncOption, NSRange, SchemaDesc,ModelID, Manner, MaterialDesc, PartID, PartName,PartSchema, MaterialID, DrawID, Remark, Flag, Hours)SELECT@mOrderID_Target AS OrderID,@mProjVersion_Target AS ProjVersion,NSID, NSFuncOption, NSRange, SchemaDesc, ModelID,Manner, MaterialDesc, PartID, PartName, PartSchema,MaterialID, DrawID, Remark, Flag, HoursFROMUDSGKS_ProjNSListWHEREOrderID = @mOrderID_Source ANDProjVersion = @mProjVersion_Source--导入源平台的附言和备注到目标平台UPDATEUDSGKS_PlatformTaskSETPostscripts = T1.Postscripts,Remark = T1.RemarkFROM(SELECT Postscripts,RemarkFROMUDSGKS_PlatformTaskWHEREOrderID = @mOrderID_Source ANDProjVersion = @mProjVersion_Source) AS T1WHEREOrderID = @mOrderID_Target ANDProjVersion = @mProjVersion_TargetCOMMIT TRANEND TRYBEGIN CATCHROLLBACK TRANDECLARE @ErrMsg NVARCHAR(4000), @ErrSeverity INT        SELECT @ErrMsg = ERROR_MESSAGE(),               @ErrSeverity = ERROR_SEVERITY()RAISERROR (@ErrMsg, @ErrSeverity, 1)END CATCHEND

0 0