在项目中经常有大量数据信息保存到数据库,如只用一张表保存那肯定不现实,首选解决方案为按日期建立动态表来保存数据。在不改变保存方式的代码的情况下,用动态存储过程是首选,在sql server存储过程中进行日期计算,按日期建表效率最高,下面就公司项目的部分动态存储过程粘贴出来:
-----sql语句: ALTER proc [dbo].[EventInsert] @chrTagData varchar(50), --编号 @intEData int, @chrJZData varchar(50), @intDYData int, @intXHData int, @createdata datetime, @chrtype varchar(1) --查询条件 as begin declare @chrTitle varchar(1000) declare @chrSql nvarchar(4000) declare @chrdate varchar(50) declare @chrMetabname varchar(50) --每日新建报警新表名 declare @chrSendtabname varchar(50) --每日新建消息弹出框新表名 declare @chrSockDatatabname varchar(50) --每日原始数据新表名 set @chrdate =replace(convert(varchar(10),getdate(),120),'-','') set @chrMetabname='SocketMe'+@chrdate set @chrSendtabname='MessSend'+@chrdate set @chrSockDatatabname='SockData'+@chrdate if isnull(@chrtype,'')='' begin return end select @chrTitle=CategoryTitle from EventCategory where CategoryID=@chrtype ----新建每日信息模拟表1 set @chrsql= ' if not exists(select 1 from sysobjects where name='''+@chrMetabname+''' and type=''U'') begin CREATE TABLE '+@chrMetabname+'( SMeID int IDENTITY(1,1) primary key, tabname varchar(50), TagData varchar(50), TagDataMe varchar(500), Pcount int NULL, Content varchar(5000), UserID int NULL, JZData varchar(50), EData int, DYData int, XHData int, Type varchar(1), State varchar(1), IfClose varchar(1), CloseDate datetime, CreateDate datetime, ) end ' --print @chrsql exec(@chrsql) --------新建信息模拟表2------------ set @chrsql= ' if not exists(select 1 from sysobjects where name='''+@chrSendtabname+''' and type=''U'') begin CREATE TABLE '+@chrSendtabname+'( MessID int IDENTITY(1,1) primary key, TabName varchar(50), TabPrID int, MessTitle varchar(500), TagData varchar(50), TagDataMe varchar(1000), Content varchar(2000), Type varchar(1), CreateDate datetime ) end ' --print @chrsql exec(@chrsql) -----模拟环境 判断符合条件的数据则插入---------------------- set @chrsql= ' if not exists(select 1 from '+@chrMetabname+' whereTagData='''+@chrTagData+''' and type='''+@chrtype+''' and IfClose=''0'') begin --插入表一 insert into '+@chrMetabname+' (tabname,TagData,TagDataMe,Content, JZData,EData,DYData,XHData,Type,IfClose,CreateDate,State) --模拟数据 select '''+@chrMetabname+''','''+@chrTagData+''',dbo.funTagDataMeget_all('''+@chrTagData+'''), '''+@chrTitle+',位置:[''+dbo.funGetEvenAddget('''+@chrJZData+''')+'']'','''+@chrJZData+''','''+CAST(@intEData as varchar)+''','''+CAST(@intDYData as varchar)+''','''+CAST(@intXHData as varchar)+''', '''+@chrtype+''',''0'',getdate(),''0'' ----dbo.funGetEvenAddget 为自定义函数 declare @intSMeID int declare @chrtempdate varchar(50) set @intSMeID =@@identity delete '+@chrSendtabname+' whereTagData='''+@chrTagData+''' andtype='''+@chrtype+''' ---插入表二 insert into '+@chrSendtabname+' (TabName,TabPrID,MessTitle,TagData,Content,Type,CreateDate) select '''+@chrMetabname+''',@intSMeID,dbo.funTagDataMeget_all('''+@chrTagData+''')+'''+@chrTitle+''','''+@chrTagData+''', dbo.funTagDataMeget_all('''+@chrTagData+''')+'''+@chrTitle+',位置:[''+dbo.funGetEvenAddget('''+@chrJZData+''')+'']'','''+@chrtype+''',getdate() end ' print @chrsql exec(@chrsql) end ---根据实际业务进行逻辑处理后插入动态表
标签:
日期,保存数据,存储过程
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“sql server动态存储过程按日期保存数据示例”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
20240518
20240518
- 群星《乘风2024 第1期》[FLAC/分轨][322.4MB]
- 【古典音乐】卡拉扬《莫扎特·魔笛(全剧)》2CD.2015[FLAC+CUE整轨]
- Yurika《ただいま》【Hi-Res】24bit-96kHz【flac】
- 张琍敏2006-金鼎奖系列14[台湾版]CD1[WAV+CUE]
- 林一峰2008-城市旅人[香港首版][WAV+CUE]
- 群星1990-六个梦电视原声带[日本版][WAV+CUE]
- [In-Akustik7801]KissedByASong-《Dynaudio丹拿发烧示范盘》(2014)HQCD[WAV+CUE]
- 群星《17号音乐仓库2 第10期》[320K/MP3][66.53MB]
- 群星《17号音乐仓库2 第10期》[FLAC/分轨][163.67MB]
- 宝丽金50周年《古典篇》3CD限定盘[低速原抓WAV+CUE][1.8G]
- 群星.1986-新格名曲精选-歌3【新格】【WAV+CUE】
- 【ABC唱片】徐刚《独步外滩SACD》ISO+WAV分轨
- 刘月宁《扬琴独奏-木兰辞变奏曲》[FLAC+CUE]
- 陈奕迅《48首选》[WAV分轨][1.8G]
- 林忆莲《陪着我走》 SACD DSD64[DSF][1.1G]