当前位置:  数据库>sqlserver

sql server动态存储过程按日期保存数据示例

    来源: 互联网  发布时间:2014-10-14

    本文导语:  在项目中经常有大量数据信息保存到数据库,如只用一张表保存那肯定不现实,首选解决方案为按日期建立动态表来保存数据。在不改变保存方式的代码的情况下,用动态存储过程是首选,在sql server存储过程中进行日期计算,...

在项目中经常有大量数据信息保存到数据库,如只用一张表保存那肯定不现实,首选解决方案为按日期建立动态表来保存数据。在不改变保存方式的代码的情况下,用动态存储过程是首选,在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

---根据实际业务进行逻辑处理后插入动态表


    
 
 

您可能感兴趣的文章:

  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 拼接SQL字符串方法示例
  • sql 行转列示例代码
  • sql中count或sum为条件的查询示例(sql查询count)
  • sql 取代游标的写法示例
  • sql使用cast进行数据类型转换示例
  • sql 语句插入结果为select和值混合示例
  • sql2005统计技巧示例
  • sql函数实现递归查询示例
  • sql递归函数示例
  • java实现简单的给sql语句赋值的示例
  • sql多表行转列、级联行转列示例代码
  • sql级联删除与级联更新方法示例
  • t-sql清空表数据的两种方式示例(truncate and delete)
  • sql server 临时表的删除示例
  • php导入SQL文件(示例代码)
  • SQL 分布式查询、插入递增列示例
  • sql四舍五入函数示例
  • sql带分隔符的截取字符串示例
  • sql2005 存储过程分页示例代码
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • sql server 2008:您对无法重新创建的表进行了更改或者启用了“阻止保存重新创建表的更改”
  • 一段脚本实现自动备份并保存最近几天的SQL数据库
  • 通过sql语句将blob里的char取出来转成数字保存在其它字段
  • C#将Sql数据保存到Excel文件中的方法
  • 怎样把jpg或者gif格式的图片保存到sql server 2000中啊?
  •  
    本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
  • java调用sql server存储过程,如何取存储过程返回码(不是结果集)
  • 急!如何从一个shell文件中传递一个参数到sql文件中,不能用存储过程
  • 在SQL server 2000中用JAVA实现图片存储
  • 用SQL统计SQLServe表存储空间大小的代码
  • 返回SQL执行时间的存储过程
  • java能否调用SQL-SERVER存储过程呢?如果能?如何调?
  • MySQL 存储过程中执行动态SQL语句的方法
  • 浅析SQL Server中包含事务的存储过程
  • SQL SERVER 利用存储过程查看角色和用户信息的写法
  • sql server中sp_reset_connection存储过程的作用
  • 浅析SQL存储过程和事务处理
  • sql 存储过程批量删除数据的语句
  • SQL创建的几种存储过程
  • Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)
  • 关键字: oracle,存储过程,数据库,查询,动态sql包,数组,参传,jdbc 1
  • 请教一个JDBC调用SQL Server 存储过程的问题
  • SQL Server去除外键的存储过程
  • sql2005 存储过程技巧点滴记录
  • sql 判断函数、存储过程是否存在的代码整理
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号