SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[HOLis_TestRegister] @XML ntext , @FiltrateItem int = 0 AS --HOLisItemAccept DECLARE @iDOM INT, @iret INT , @FLAGS int --新增标志 , @LAB42 varchar(20) , @LAB01 int , @BEY01 int , @LAB20 varchar(20) , @LAB22 varchar(20) , @LAB32 int --检验状态 , @LAB56 varchar(255) --拒收说明 , @BCK01A int , @BCK01B int , @BCK01C int , @BCK01D int , @BCE01 int , @BCE03 varchar(20)--员工姓名 , @BAQ03 varchar(128)--工作单位 , @IsExist int --条码存在标志 0不存在 1 条码在VBI1 2 条码在VBI2 , @ACF01 int , @VAF01 int , @LAB23 varchar(20) , @LAC01 int Exec @iret = sp_xml_preparedocument @iDOM OUTPUT, @XML IF @iret > 0 begin RAISERROR('解析XML文档时发生错误,错误号: %d.', 16, 1, @iret) RETURN 0 end select @BCE01 = EmpId, @BCE03 = EmpName from OPENXML(@iDOM, '/Root/OperInfo', 8) WITH( EmpId int, EmpName varchar(20) ) select @FLAGS = FLAGS, @LAB42 = LAB42, @LAB01 = LAB01, @BEY01 = BEY01 , @LAB20 = LAB20, @LAB22 = LAB22, @LAB32 = LAB32, @LAB56 = LAB56 from openxml(@iDOM, '/Root/Param/Ie', 8) with( FLAGS INT, LAB42 VARCHAR(20), LAB01 INT, BEY01 INT, LAB20 VARCHAR(20), LAB22 VARCHAR(20), LAB32 INT, LAB56 VARCHAR(255) ) exec sp_xml_removedocument @iDOM ---------------------------------------------------------------------------------------------------- --校验条码合法性 set @IsExist = 0 select top 1 @IsExist = 1, @ACF01 = ACF01, @VAF01 = VAF01 from VBI1 A where VBI21 = @LAB42 and VBI13 = 0 if @IsExist = 0 --1表不存在数据 检索2表 select top 1 @IsExist = 2, @ACF01 = ACF01, @VAF01 = VAF01 from VBI2 where VBI21 = @LAB42 and VBI13 = 0 if @IsExist = 0 begin raiserror('样本条码%s没有找到.', 16, 1, @LAB42) return 1 end if @FLAGS = 0 --覆盖 begin --未审核的条码 重新取样本ID /*if @LAB01 <> (select top 1 LAB01 from LAB1 where LAB42 = @LAB42 and BEY01A = @BEY01) begin raiserror('样本条码%s已存在,不能重复!', 16, 1, @LAB42) return 6 end*/ select @LAB23 = RIGHT(replicate('0', 20) + @LAB22, 20) end else if @FLAGS = 1 --新增 begin /*if exists(select * from LAB1 where LAB42 = @LAB42 and BEY01A = @BEY01) begin raiserror('样本检验中,条码:%s已存在.', 16, 1, @LAB42) return 4 end*/ --获取最新样本号 样本序号 EXEC Lab_GetNextSampleNo @BEY01, @LAB20, 1, @LAB22 OUT set @LAB23 = RIGHT(replicate('0', 20) + @LAB22, 20) end if (@ACF01 <> 1) and (@ACF01 <> 2) begin raiserror('条码所属病人非门诊或住院,不能核收.', 16, 1) return 5 end ---------------------------------------------------------------------------------------------------- --根据条码,获取医嘱抄送的病人数据 if object_id('tempdb..#LAB1') is not null DROP TABLE #LAB1 select LAB01, LAB02, VAA01, VAA07, VAP01, BCK01A, ABBRP, ABBRW, LAB09, VAA05, ABW01, LAB12, AAU01, LAB14, BDP02, LAB16 , BES02, LAB18, ACF01, LAB20, LAB21, LAB22, LAB23, ABB02, BEY01A, BEY01B, BEW02, BCK01B, BEY07, LAB30, LAB31, LAB32 , LAB33, LAB34, LAB35, LAB36, LAB37, BCE03, BCK01C, LAB40, VAF01, LAB42, LAB43, BCE03A, BCE03C, LAB46, BCE01D , BCE03D, BCE03E, LAB50, BCE01B, BCE03B, LAB53, LAB54, LAB55, LAB56, BET02, LAB58, LAB59, LAB60, LAB61, LAB62 , LAB63, LAB64, BEX02, BCK01D, BAQ03 into #LAB1 from LAB1 where 1 = 0 if @ACF01 = 2 --医疗类型 住院 begin IF @IsExist = 1 --数据来源VBI1 begin Insert into #LAB1(LAB01, LAB02, VAA01, ABBRP, ABBRW, LAB09, VAA05, ABW01, LAB12, AAU01, LAB14 , BDP02, LAB16, LAB18, ACF01, LAB20, LAB22, LAB23, ABB02, BEY01A, BEY01B, BEY07, LAB32 , LAB42, BCE03C, LAB46, LAB60, BCE01D, BCE03D, BCE03, LAB56, BAQ03, BCK01D, LAB36) select 0, A.VBI21, C.VAA01, C.ABBRP, C.ABBRW, C.VAA04, C.VAA05, C.ABW01, C.VAA10, C.AAU01, C.VAA12 , C.BDP02, D.BCQ04B, '', @ACF01, @LAB20, @LAB22, @LAB23, E.ABB02, E.BEY01, E.BEY01A, E.BEY07, @LAB32 , @LAB42, @BCE03, @LAB20, @LAB20, @BCE01, @BCE03, A.BCE03D, @LAB56, D.BAQ03, D.BCK01C, 0 from VBI1 A Join VAE1 D ON A.VAA07 = D.VAE01 Join VAA1 C ON D.VAA01 = C.VAA01 Join BEY1 E ON E.BEY01 = @BEY01 where A.VBI21 = @LAB42 And A.VAF01 = @VAF01 Update #LAB1 set VAA07 = A.VAF06, VAP01 = A.VAF07, BCK01A = A.BCK01A, LAB21 = isnull(A.VAF35, 0) + 1 , BCK01B = A.BCK01B, BCK01C = A.BCK01A, BCE03 = A.BCE03A, LAB40 = DATEADD(MI, -10, GETDATE())/*A.VAF47*/, ABB02 = A.VAF14 , LAB18 = (SELECT TOP 1 VAO15 FROM VAO1 WHERE VAF01 = A.CBM01) from VAF1 A where A.VAF01=@VAF01 end else IF @IsExist = 2 --数据来源VBI2 begin Insert into #LAB1(LAB01, LAB02, VAA01, ABBRP, ABBRW, LAB09, VAA05, ABW01, LAB12, AAU01, LAB14 , BDP02, LAB16, LAB18, ACF01, LAB20, LAB22, LAB23, ABB02, BEY01A, BEY01B, BEY07, LAB32 , LAB42, BCE03C, LAB46, LAB60, BCE01D, BCE03D, BCE03, LAB56, BAQ03, BCK01D, LAB36) select 0, A.VBI21, C.VAA01, C.ABBRP, C.ABBRW, C.VAA04, C.VAA05, C.ABW01, C.VAA10, C.AAU01, C.VAA12 , C.BDP02, D.BCQ04B, '', @ACF01, @LAB20, @LAB22, @LAB23, E.ABB02, E.BEY01, E.BEY01A, E.BEY07, @LAB32 , @LAB42, @BCE03, @LAB20, @LAB20, @BCE01, @BCE03, A.BCE03D, @LAB56, D.BAQ03, D.BCK01C, 0 from VBI2 A Join VAE1 D ON A.VAA07 = D.VAE01 Join VAA1 C ON D.VAA01 = C.VAA01 Join BEY1 E ON E.BEY01 = @BEY01 where A.VBI21 = @LAB42 And VAF01 = @VAF01 Update #LAB1 set VAA07 = A.VAF06, VAP01 = A.VAF07, BCK01A = A.BCK01A, LAB21 = isnull(A.VAF35, 0) + 1 , BCK01B = A.BCK01B, BCK01C = A.BCK01A, BCE03 = A.BCE03A, LAB40 = DATEADD(MI, -10, GETDATE())/*A.VAF47*/, ABB02 = A.VAF14 , LAB18 = (SELECT TOP 1 VAO15 FROM VAO2 WHERE VAF01 = A.CBM01) from VAF2 A where A.VAF01=@VAF01 end end else if @ACF01 = 1 --医疗类型 门诊 begin if @IsExist = 1 begin Insert into #LAB1(LAB01, LAB02, VAA01, ABBRP, ABBRW, LAB09, VAA05, ABW01, LAB12, AAU01, LAB14 , BDP02, LAB16, LAB18, ACF01, LAB20, LAB22, LAB23, ABB02, BEY01A, BEY01B, BEY07, LAB32 , LAB42, BCE03C, LAB46, LAB60, BCE01D, BCE03D, BCE03, LAB56, BAQ03, LAB36) select 0, A.VBI21, C.VAA01, C.ABBRP, C.ABBRW, C.VAA03, C.VAA05, C.ABW01, C.VAA10, C.AAU01, C.VAA12 , C.BDP02, '', '', @ACF01, @LAB20, @LAB22, @LAB23, E.ABB02, E.BEY01, E.BEY01A, E.BEY07, @LAB32 , @LAB42, @BCE03, @LAB20, @LAB20, @BCE01, @BCE03, A.BCE03D, @LAB56, D.VAC27, 0 from VBI1 A Join VAC1 D ON A.VAA07 = D.VAC01 Join VAA1 C ON D.VAA01 = C.VAA01 Join BEY1 E ON E.BEY01 = @BEY01 where A.VBI21 = @LAB42 And VAF01=@VAF01 Update #LAB1 set VAA07 = A.VAF06, VAP01 = A.VAF07, BCK01A = A.BCK01A, LAB21 = isnull(A.VAF35, 0) + 1 , BCK01B = A.BCK01B, BCK01C = A.BCK01A, BCE03 = A.BCE03A, LAB40 = DATEADD(MI, -10, GETDATE())/*A.VAF47*/, ABB02 = A.VAF14 , LAB18 = (SELECT TOP 1 VAO15 FROM VAO1 WHERE VAF01 = A.CBM01) from VAF1 A where A.VAF01=@VAF01 end else if @IsExist = 2 begin Insert into #LAB1(LAB01, LAB02, VAA01, ABBRP, ABBRW, LAB09, VAA05, ABW01, LAB12, AAU01, LAB14 , BDP02, LAB16, LAB18, ACF01, LAB20, LAB22, LAB23, ABB02, BEY01A, BEY01B, BEY07, LAB32 , LAB42, BCE03C, LAB46, LAB60, BCE01D, BCE03D, BCE03, LAB56, BAQ03, LAB36) select 0, A.VBI21, C.VAA01, C.ABBRP, C.ABBRW, C.VAA03, C.VAA05, C.ABW01, C.VAA10, C.AAU01, C.VAA12 , C.BDP02, '', '', @ACF01, @LAB20, @LAB22, @LAB23, E.ABB02, E.BEY01, E.BEY01A, E.BEY07, @LAB32 , @LAB42, @BCE03, @LAB20, @LAB20, @BCE01, @BCE03, A.BCE03D, @LAB56, D.VAC27, 0 from VBI2 A Join VAC1 D ON A.VAA07 = D.VAC01 Join VAA1 C ON D.VAA01 = C.VAA01 Join BEY1 E ON E.BEY01 = @BEY01 where A.VBI21 = @LAB42 And VAF01=@VAF01 Update #LAB1 set VAA07 = A.VAF06, VAP01 = A.VAF07, BCK01A = A.BCK01A, LAB21 = isnull(A.VAF35, 0) + 1 , BCK01B = A.BCK01B, BCK01C = A.BCK01A, BCE03 = A.BCE03A, LAB40 = DATEADD(MI, -10, GETDATE())/*A.VAF47*/, ABB02 = A.VAF14 , LAB18 = (SELECT TOP 1 VAO15 FROM VAO2 WHERE VAF01 = A.CBM01) from VAF2 A where A.VAF01=@VAF01 end end if not exists(select * from #LAB1) begin raiserror('信息不完整,导致提取病人信息出错.', 16, 1) return 6 end --当有婴儿ID时 更新病人信息为婴儿 if exists(select VAP01 from #LAB1 where VAP01 > 0) begin declare @VAP_AAU1 VARCHAR(4), @VAP_AAU2 VARCHAR(4) set @VAP_AAU1 = isnull((select AAU01 from AAU1 where AAU02 = '天'), 'D') set @VAP_AAU1 = isnull((select AAU01 from AAU1 where AAU02 = '小时'), 'H') update A set A.VAA05 = B.VAP05, A.ABW01 = B.ABW01, A.LAB14 = B.VAP07 , A.LAB12 = case when DATEDIFF(MINUTE, B.VAP07, GETDATE()) > 1440 then DATEDIFF(MINUTE, B.VAP07, GETDATE())/1440 else DATEDIFF(MINUTE, B.VAP07, GETDATE())/60 end , A.AAU01 = case when DATEDIFF(MINUTE, B.VAP07, GETDATE()) > 1440 then @VAP_AAU1 else @VAP_AAU2 end from #LAB1 A join VAP1 B on A.VAP01 > 0 and A.VAP01 = B.VAP01 end ---------------------------------------------------------------------------------------------------- --根据条码获取医嘱记录中的项目信息 if OBJECT_ID('tempdb..#LAC1') is not null drop table #LAC1 select LAC01, LAB01, BBX01, BBX01A, LAJ01, BFO01, BEY01, LAC08, LAC09, LAC10, LAC11, LAC12, LAC13, LAC14, LAC15 , LAC16, LAC17, LAC18, LAC19, BBY25, LAC21, BCE03A, LAC23, BCE03B, LAC25, LAC26, LAC27, identity(int, 1, 1) as ROWNR , LAC29, LAC30, VAF01 into #LAC1 from LAC1 where 1=2 if @IsExist = 1 begin insert into #LAC1(LAC01, LAB01, BBX01, BBX01A, LAJ01, BFO01, BEY01, LAC08, LAC09, LAC10, LAC11, LAC12, LAC13, LAC14, LAC15 , LAC16, LAC17, LAC18, LAC19, BBY25, LAC21, BCE03A, LAC23, BCE03B, LAC25, LAC26, LAC27, VAF01) select Distinct 0, @LAB01, (Case isnull(J.BBX01A, 0) When 0 Then A1.BBX01 else K.BBX01 End) BBX01, isnull(J.BBX01A,0) BBX01A , 0, 0, @BEY01, '', '', '', '', '', '', '', '', '', '', '', 3 as LAC19, 0, 0, '', @LAB20, '', '', '', 0 AS LAC27, A.VAF01 from VAF1 A Join BBX1 A1 ON A.BBX01 = A1.BBX01 join VBI1 B ON A.VAF01 = B.VAF01 Left join BFD1 J ON J.BBX01A = A.BBX01 and A1.BBX12 = 1 left Join BBX1 K ON K.BBX01 = J.BBX01B where A.BDA01 = 'L' and B.VBI21 = @LAB42 and A.VAF11 = 2 --临时医嘱 and (A.VAF10 = 8 or A.VAF10 = 9) --已发送或停止 and Exists(SELECT * FROM BAZ1 E WHERE A.BCK01B = E.BCK01 AND E.BAU01 = '31') and (Exists(Select * From VAJT J1 where A.VAF01 = J1.VAF01 And J1.VAJ05 <= 2) or Exists(Select * From VAJ1 J1 where A.VAF01 = J1.VAF01 And J1.VAJ05 <= 2)) end else if @IsExist = 2 begin insert into #LAC1(LAC01, LAB01, BBX01, BBX01A, LAJ01, BFO01, BEY01, LAC08, LAC09, LAC10, LAC11, LAC12, LAC13, LAC14, LAC15 , LAC16, LAC17, LAC18, LAC19, BBY25, LAC21, BCE03A, LAC23, BCE03B, LAC25, LAC26, LAC27, VAF01) select Distinct 0, @LAB01, (Case isnull(J.BBX01A, 0) When 0 Then A1.BBX01 else K.BBX01 End) BBX01, isnull(J.BBX01A,0) BBX01A , 0, 0, @BEY01, '', '', '', '', '', '', '', '', '', '', '', 3 as LAC19, 0, 0, '', @LAB20, '', '', '', 0 AS LAC27, A.VAF01 from VAF2 A Join BBX1 A1 ON A.BBX01 = A1.BBX01 join VBI2 B ON A.VAF01 = B.VAF01 Left join BFD1 J ON J.BBX01A = A.BBX01 and A1.BBX12 = 1 left Join BBX1 K ON K.BBX01 = J.BBX01B where A.BDA01 = 'L' and B.VBI21 = @LAB42 and A.VAF11 = 2 --临时医嘱 and (A.VAF10 = 8 or A.VAF10 = 9) --已发送或停止 and Exists(SELECT * FROM BAZ1 E WHERE A.BCK01B = E.BCK01 AND E.BAU01 = '31') and (Exists(Select * From VAJT J1 where A.VAF01 = J1.VAF01 And J1.VAJ05 <= 2) or Exists(Select * From VAJ2 J1 where A.VAF01 = J1.VAF01 And J1.VAJ05 <= 2)) end ---考虑参数“通道号过滤核收项目” if @FiltrateItem = 1 delete from #LAC1 where BBX01 not in (select BBX01 from BFH1 where BEY01 = @BEY01) declare @i int, @iCount int , @BBX01 int, @ABB02 varchar(30), @ABW01 varchar(10), @AAU01 varchar(10), @Age int , @BES02 varchar(30), @BFG11 varchar(20), @BFG12 varchar(20), @BFG13 varchar(128) , @BFG17 varchar(20), @BFG18 varchar(20) if exists(select * from #LAC1) begin UPDATE M SET M.LAC10 = N.BFC26 FROM #LAC1 M JOIN BFC1 N ON M.BBX01 = N.BBX01 AND ISNULL(M.LAC10, '') = '' select @ABB02 = ABB02, @ABW01 = ABW01, @AAU01 = AAU01, @Age = LAB12, @BES02 = BES02 from #LAB1 --保存数据前 先重新取参考差异 所需参数 前面已提取 SELECT @iCount = MAX(ROWNR), @i = 1 FROM #LAC1 WHILE @i <= @iCount BEGIN select @BBX01 = BBX01, @BFG11 = '', @BFG12 = '', @BFG13 = '', @BFG17 = '', @BFG18 = '' from #LAC1 where ROWNR = @i Exec HOLis_GetRange_Ex @BBX01 --项目ID , @BEY01 --仪器 , @ABB02 --样本类型 , @ABW01 --性别 , @AAU01 --年龄单位 , @Age --年龄 , @BES02 --生理体征 , @BFG11 out, @BFG12 out, @BFG13 out, @BFG17 out, @BFG18 out UPDATE M SET M.LAC13 = @BFG11, M.LAC14 = @BFG12, M.LAC15 = @BFG13, M.LAC29 = @BFG17, M.LAC30 = @BFG18 FROM #LAC1 M WHERE ROWNR = @i SET @i = @i + 1 END end /*if not exists(select * from #LAC1) begin raiserror('信息不完整,导致提取项目信息出错.', 16, 1) return 7 end*/ ---------------------------------------------------------------------------------------------------- --修改检验数据 if @FLAGS = 1 --新增 begin Exec Core_NewId_LAB01 @LAB01 out Exec Core_NewId_LAC01 @LAC01 out, @iCount UPDATE #LAB1 SET LAB01 = @LAB01 UPDATE #LAC1 SET LAB01 = @LAB01, LAC01 = @LAC01 - @iCount + ROWNR INSERT INTO LAB1(LAB01, LAB02, VAA01, VAA07, VAP01, BCK01A, ABBRP, ABBRW, LAB09, VAA05, ABW01, LAB12, AAU01, LAB14, BDP02, LAB16 , BES02, LAB18, ACF01, LAB20, LAB21, LAB22, LAB23, ABB02, BEY01A, BEY01B, BEW02, BCK01B, BEY07, LAB30, LAB31, LAB32 , LAB33, LAB34, LAB35, LAB36, LAB37, BCE03, BCK01C, LAB40, VAF01, LAB42, LAB43, BCE03A, BCE03C, LAB46, BCE01D , BCE03D, BCE03E, LAB50, BCE01B, BCE03B, LAB53, LAB54, LAB55, LAB56, BET02, LAB58, LAB59, LAB60, LAB61, LAB62 , LAB63, LAB64, BEX02, BCK01D, BAQ03) select LAB01, LAB02, VAA01, VAA07, VAP01, BCK01A, ABBRP, ABBRW, LAB09, VAA05, ABW01, LAB12, AAU01, LAB14, BDP02, LAB16 , BES02, LAB18, ACF01, LAB20, LAB21, LAB22, LAB23, ABB02, BEY01A, BEY01B, BEW02, BCK01B, BEY07, LAB30, LAB31, LAB32 , LAB33, LAB34, LAB35, LAB36, LAB37, BCE03, BCK01C, LAB40, VAF01, LAB42, LAB43, BCE03A, BCE03C, LAB46, BCE01D , BCE03D, BCE03E, LAB50, BCE01B, BCE03B, LAB53, LAB54, LAB55, LAB56, BET02, LAB58, LAB59, LAB60, LAB61, LAB62 , LAB63, LAB64, BEX02, BCK01D, BAQ03 from #LAB1 INSERT INTO LAC1(LAC01, LAB01, BBX01, BBX01A, LAJ01, BFO01, BEY01, LAC08, LAC09, LAC10, LAC11, LAC12 , LAC13, LAC14, LAC15, LAC16, LAC17, LAC18, LAC19, BBY25, LAC21, BCE03A, LAC23 , BCE03B, LAC25, LAC26, LAC27, ROWNR, LAC29, LAC30, VAF01) select LAC01, LAB01, BBX01, BBX01A, LAJ01, BFO01, BEY01, LAC08, LAC09, LAC10, LAC11, LAC12 , LAC13, LAC14, LAC15, LAC16, LAC17, LAC18, LAC19, BBY25, LAC21, BCE03A, LAC23 , BCE03B, LAC25, LAC26, LAC27, ROWNR, LAC29, LAC30, VAF01 from #LAC1 end else if @FLAGS = 0 --覆盖 begin UPDATE M SET M.LAB02 = N.LAB02, M.VAA01 = N.VAA01, M.VAA07 = N.VAA07, M.VAP01 = N.VAP01 , M.BCK01A = N.BCK01A, M.ABBRP = N.ABBRP, M.ABBRW = N.ABBRW, M.LAB09 = N.LAB09 , M.VAA05 = N.VAA05, M.ABW01 = N.ABW01, M.LAB12 = N.LAB12, M.AAU01 = N.AAU01 , M.LAB14 = N.LAB14, M.BDP02 = N.BDP02, M.LAB16 = N.LAB16, M.BES02 = N.BES02 , M.LAB18 = N.LAB18, M.ACF01 = N.ACF01, M.LAB20 = N.LAB20, M.LAB21 = N.LAB21 , M.LAB22 = N.LAB22, M.LAB23 = N.LAB23, M.ABB02 = N.ABB02, M.BEY01A = N.BEY01A , M.BEY01B = N.BEY01B, M.BEW02 = N.BEW02, M.BCK01B = N.BCK01B, M.BEY07 = N.BEY07 , M.LAB30 = N.LAB30, M.LAB31 = N.LAB31, M.LAB32 = N.LAB32, M.LAB33 = N.LAB33 , M.LAB34 = N.LAB34, M.LAB35 = N.LAB35, M.LAB36 = N.LAB36, M.LAB37 = N.LAB37 , M.BCE03 = N.BCE03, M.BCK01C = N.BCK01C, M.LAB40 = N.LAB40, M.VAF01 = N.VAF01 , M.LAB42 = N.LAB42, M.LAB43 = N.LAB43, M.BCE03A = N.BCE03A, M.BCE03C = N.BCE03C , M.LAB46 = N.LAB46, M.BCE01D = N.BCE01D, M.BCE03D = N.BCE03D, M.BCE03E = N.BCE03E , M.LAB50 = N.LAB50, M.BCE01B = N.BCE01B, M.BCE03B = N.BCE03B, M.LAB53 = N.LAB53 , M.LAB54 = N.LAB54, M.LAB55 = N.LAB55, M.LAB56 = N.LAB56, M.BET02 = N.BET02 , M.LAB58 = N.LAB58, M.LAB59 = N.LAB59, M.LAB60 = N.LAB60, M.LAB61 = N.LAB61 , M.LAB62 = N.LAB62, M.LAB63 = N.LAB63, M.LAB64 = N.LAB64, M.BEX02 = N.BEX02 , M.BCK01D = N.BCK01D, M.BAQ03 = N.BAQ03 FROM LAB1 M JOIN #LAB1 N ON M.LAB01 = @LAB01 Exec Core_NewId_LAC01 @LAC01 out, @iCount UPDATE #LAC1 SET LAB01 = @LAB01, LAC01 = @LAC01 - @iCount + ROWNR --更新已存在的项目的医嘱信息 UPDATE A SET A.VAF01 = B.VAF01 FROM LAC1 A JOIN #LAC1 B ON A.LAB01 = @LAB01 AND A.BBX01 = B.BBX01 --删除#LAC1中重复的项目 delete from #LAC1 where BBX01 in (select BBX01 from LAC1 where LAB01 = @LAB01) INSERT INTO LAC1(LAC01, LAB01, BBX01, BBX01A, LAJ01, BFO01, BEY01, LAC08, LAC09, LAC10, LAC11, LAC12 , LAC13, LAC14, LAC15, LAC16, LAC17, LAC18, LAC19, BBY25, LAC21, BCE03A, LAC23 , BCE03B, LAC25, LAC26, LAC27, ROWNR, LAC29, LAC30, VAF01) select LAC01, LAB01, BBX01, BBX01A, LAJ01, BFO01, BEY01, LAC08, LAC09, LAC10, LAC11, LAC12 , LAC13, LAC14, LAC15, LAC16, LAC17, LAC18, LAC19, BBY25, LAC21, BCE03A, LAC23 , BCE03B, LAC25, LAC26, LAC27, ROWNR, LAC29, LAC30, VAF01 from #LAC1 end SELECT @LAB01 --select @IsExist, @ACF01, @VAF01, @FLAGS, @LAB42, @LAB01, @BEY01, @LAB20, @LAB22, @LAB32, @LAB56 drop table #LAB1 drop table #LAC1