月夜钓钱江鱼

醉后不知天在水,满船清梦压星河。
posts - 50,comments - 8,views - 29026
复制代码
为了处理IP回传与串口回传共用的过程,特此修改此存储过程。记录在此:

1
set ANSI_NULLS ON 2 set QUOTED_IDENTIFIER ON 3 go 4 5 -- 6 7 /* ============================================= 8 -- Author: Fzj 9 -- Create date: 20140730 10 -- Description: 伺服程序数据处理 11 --批量处理伺服数据 12 --处理内容说明: 13 --1、更新SRV表在线状态 14 --2、更新或新增RAWDATASTREAMS表 15 --3、更新或新增SRVDAYINFO表,并修改状态为在线 16 --参数说明: 17 --@SrvPhyId 设备物理码 18 --@RdsTime 回传时间 19 --@RdsBody 信息体内容 20 --@RdsFlag 回传类型 21 --修改记录 22 序号 修改时间 修改人 修改内容 23 1 20140731 FZJ 增加TRY CATCH处理,防止出现死锁导致程序阻塞 24 2 20140902 FZJ 将临时表RDSBACKUP内容转入临时表#tmp_rdsbackup,防止并发影响数据 25 3 20140912 FZJ 将COM口、TCP处理合并为一个存储过程 26 =============================================*/ 27 ALTER PROCEDURE [dbo].[Proc_Srv_LotsRmDataDeal] 28 @tablename varchar(50) = 'RDSBackUp' 29 AS 30 BEGIN 31 SET NOCOUNT ON; 32 --将传入的字符串转为数据并存入临时表中 33 34 declare @Status nvarchar(10), @ProgramCheck nvarchar(10) 35 set @Status = '在线' 36 set @ProgramCheck = '转播中' 37 38 declare @s varchar (2000), @tmpname varchar(100) 39 set @tmpname = '##tmp_rds' + substring(@tablename, 3, len(@tablename) - 2) 40 41 --判断全局临时表是否存在,如果存在则删除 42 43 begin tran t1 44 set @s = N'Select * into ' + @tmpname + ' from ' + @tablename + ';' 45 + 'truncate table ' + @tablename + ';' 46 + 'select * from ' + @tmpname + ';' 47 --处理RDSBackUp中可能重复记录 48 + 'Delete from ' + @tmpname + 49 ' Where RDS_BACKUPID not in (Select max(RDS_BACKUPID) ' 50 + ' from ' + @tmpname + ' group by SRV_PHYSICAL_CODE, RDS_FLAG);' 51 --更新SRV表 52 + 'Update Srv set srv_rmt_status = ''' + @Status +''' , srv_rmt_time = b.RDS_TIME 53 from Srv a ' 54 + ' inner join ' + @tmpname + ' b on a.Srv_physical_code = b.SRV_PHYSICAL_CODE;' 55 56 exec (@s); 57 58 59 60 61 if @@error <> 0 62 begin 63 rollback tran t1 64 return 65 end 66 --更新或新增RAWDATASTREAMS表 67 set @s = N'Update RawDataStreams set rds_body = b.RDS_BODY, rds_time = b.RDS_TIME 68 from RawDataStreams a ' + 69 'inner join ' + @tmpname + ' b on a.Srv_physical_code = b.SRV_PHYSICAL_CODE 70 and a.rds_flag = b.RDS_FLAG;' 71 exec(@s) 72 if @@error <> 0 73 begin 74 rollback tran t1 75 return 76 end 77 78 set @s = N'insert into RawDataStreams(rds_time, rds_body, Srv_physical_code, rds_flag) 79 select RDS_TIME, RDS_BODY, SRV_PHYSICAL_CODE, RDS_FLAG ' + 80 ' from ' + @tmpname + ' A 81 where not exists (select 1 from RawDataStreams b where a.SRV_PHYSICAL_CODE = b.Srv_physical_code 82 and a.RDS_FLAG = b.rds_flag);' 83 exec(@s) 84 85 if @@error <> 0 86 begin 87 rollback tran t1 88 return 89 end 90 91 set @s = N'update SRVDayInfo set SRV_RMT_STATUS = ''' + @Status + ''' , SRV_UPDATE_DATE = b.RDS_TIME 92 from SRVDayInfo a ' + 93 'inner join ' + @tmpname + ' b on a.SRV_PHYSICAL_CODE = b.SRV_PHYSICAL_CODE 94 where a.SRV_RMT_STATUS <> ''' + @Status + 95 ''' and Convert(varchar(50), a.SRV_REP_DATE, 112) = Convert(varchar(50), b.RDS_TIME, 112);' 96 exec(@s) 97 if @@error <> 0 98 begin 99 rollback tran t1 100 return 101 end 102 103 set @s = N'update SRVDayInfo set SRV_PROGRAM_CHECK = case b.RDS_FLAG when 1 then ''' + @ProgramCheck + ''' else '''' end 104 from SRVDayInfo a ' + 105 'inner join ' + @tmpname + ' b on a.SRV_PHYSICAL_CODE = b.SRV_PHYSICAL_CODE 106 where Convert(varchar(50), a.SRV_REP_DATE, 112) = Convert(varchar(50), b.RDS_TIME, 112);' 107 exec(@s) 108 109 if @@error <> 0 110 begin 111 rollback tran t1 112 return 113 end 114 115 if (convert(varchar(20), getdate(), 114) > '00:03:00') 116 begin 117 set @s = N'insert into SRVDayInfo(SRV_ID, SRV_PHYSICAL_CODE, SRV_LOGICAL_CODE, SRV_ORG_CODE, SRV_ORG_ADDRESS, 118 SRV_RMT_STATUS, SRV_REP_DATE, SRV_UPDATE_DATE, SRV_DAYINFO_REM, SRV_PROGRAM_CHECK) 119 Select A.SRV_ID, a.SRV_PHYSICAL_CODE, a.SRV_LOGICAL_CODE, a.SRV_ORG_CODEA, a.SRV_ADDRESS, ''' + @Status + ''', 120 convert(varchar(50), b.RDS_TIME, 112), b.RDS_TIME,'''', Case b.RDS_FLAG when 1 then ''' + @ProgramCheck + ''' else '''' end 121 from SRV A ' + 122 'inner join ' + @tmpname + ' b on A.SRV_PHYSICAL_CODE = b.SRV_PHYSICAL_CODE 123 where a.SRV_RMT_SWITCH = ''启用'' and 124 not exists (select 1 from SrvDayInfo c where c.SRV_PHYSICAL_CODE = b.SRV_PHYSICAL_CODE 125 and Convert(varchar(50), c.SRV_REP_DATE, 112) = Convert(varchar(50), b.RDS_TIME, 112));' 126 exec(@s) 127 if @@error <> 0 128 begin 129 rollback tran t1 130 return 131 end 132 133 end 134 135 set @s = N'drop table ' + @tmpname + ';' 136 exec (@s) 137 138 commit tran t1 139 140 141 END
复制代码

 

posted on   湘灵  阅读(230)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示