在项目中经常有大量数据信息保存到数据库,如只用一张表保存那肯定不现实,首选解决方案为按日期建立动态表来保存数据。在不改变保存方式的代码的情况下,用动态存储过程是首选,在sql server存储过程中进行日期计算,按日期建表效率最高,下面就公司项目的部分动态存储过程粘贴出来:

-----sql语句:ALTER proc [dbo].[EventInsert]@chrTagData varchar(50), --编号@intEData int,@chrJZData varchar(50),@intDYData int,@intXHData int,@createdata datetime,@chrtype varchar(1) --查询条件asbegindeclare @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'+@chrdateset @chrSendtabname='MessSend'+@chrdateset @chrSockDatatabname='SockData'+@chrdateif isnull(@chrtype,'')=''beginreturnendselect @chrTitle=CategoryTitle from EventCategory where CategoryID=@chrtype----新建每日信息模拟表1set @chrsql= 'if not exists(select 1 from sysobjects where name='''+@chrMetabname+''' and type=''U'')beginCREATE 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'')beginCREATE 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 intdeclare @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 @chrsqlexec(@chrsql)end---根据实际业务进行逻辑处理后插入动态表

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Andorid Dialog 示例【慢慢更新】
  3. Android(安卓)PureMVC
  4. Ubunu下搭建android NDK环境
  5. 自定义SeekBar主题
  6. android SQLite数据库基本操作示例
  7. android draw bitmap 示例代码
  8. Android启动时启动Activity 的定义的位置
  9. Android适配器之------BaseAdapter(例子)

随机推荐

  1. python_列表_循环遍历
  2. 应用Python开发WebService服务端及客户端
  3. 【Python】logging结合decorator模式实优
  4. python接入微博第三方API之2接入用户登录
  5. Python开发利器——wingIDE破解技巧
  6. python subprocess模块 监控子进程的2种
  7. python 的基础 学习 11天 作业题
  8. Django i18n:为{% blocktrans %}块推荐的
  9. [Z] 通天塔导游:各种编程语言的优缺点
  10. Python Homework(2018-05-30,第十三周周三)