sql server動(dòng)態(tài)存儲(chǔ)過程按日期保存數(shù)據(jù)示例
在項(xiàng)目中經(jīng)常有大量數(shù)據(jù)信息保存到數(shù)據(jù)庫,如只用一張表保存那肯定不現(xiàn)實(shí),首選解決方案為按日期建立動(dòng)態(tài)表來保存數(shù)據(jù)。在不改變保存方式的代碼的情況下,用動(dòng)態(tài)存儲(chǔ)過程是首選,在sql server存儲(chǔ)過程中進(jìn)行日期計(jì)算,按日期建表效率最高,下面就公司項(xiàng)目的部分動(dòng)態(tài)存儲(chǔ)過程粘貼出來:
-----sql語句: ALTER proc [dbo].[EventInsert] @chrTagData varchar(50), --編號(hào) @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) --每日新建報(bào)警新表名 declare @chrSendtabname varchar(50) --每日新建消息彈出框新表名 declare @chrSockDatatabname varchar(50) --每日原始數(shù)據(jù)新表名 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) -----模擬環(huán)境 判斷符合條件的數(shù)據(jù)則插入---------------------- 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) --模擬數(shù)據(jù) 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 為自定義函數(shù) 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 ---根據(jù)實(shí)際業(yè)務(wù)進(jìn)行邏輯處理后插入動(dòng)態(tài)表
- 用非動(dòng)態(tài)SQL Server SQL語句來對(duì)動(dòng)態(tài)查詢進(jìn)行執(zhí)行
- SQL SERVER 中構(gòu)建執(zhí)行動(dòng)態(tài)SQL語句的方法
- 分享一下SQL Server執(zhí)行動(dòng)態(tài)SQL的正確方式
- sqlserver 動(dòng)態(tài)創(chuàng)建臨時(shí)表的語句分享
- asp.net Menu控件+SQLServer實(shí)現(xiàn)動(dòng)態(tài)多級(jí)菜單
- sqlserver 存儲(chǔ)過程動(dòng)態(tài)參數(shù)調(diào)用實(shí)現(xiàn)代碼
- sqlserver 支持定位當(dāng)前頁,自定義排序的分頁SQL(拒絕動(dòng)態(tài)SQL)
- SQL Server中執(zhí)行動(dòng)態(tài)SQL
相關(guān)文章
Win10下安裝Sql Server 2014反復(fù)提示需安裝.NET Framework 3.5 SP1的解決方案
這篇文章主要介紹了Win10下安裝Sql Server 2014反復(fù)提示需安裝.NET Framework 3.5 SP1的解決方案,需要的朋友可以參考下2016-05-05IN&EXISTS與NOT IN&NOT EXISTS 的優(yōu)化原則小結(jié)
下面只是從理論上提出了一些建議,最好的原則是大家在上面的基礎(chǔ)上,能夠使用執(zhí)行計(jì)劃來分析,得出最佳的語句的寫法。2010-06-06數(shù)據(jù)庫設(shè)計(jì)三大范式簡(jiǎn)析
這篇文章主要介紹了數(shù)據(jù)庫設(shè)計(jì)三大范式簡(jiǎn)析,遵循范式是為了建立冗余較小、結(jié)構(gòu)合理的數(shù)據(jù)庫,需要學(xué)習(xí)數(shù)據(jù)庫設(shè)計(jì)三大范式的朋友可以參考下2015-08-08必須會(huì)的SQL語句(三) 數(shù)據(jù)插入
這篇文章主要介紹了sqlserver中數(shù)據(jù)插入的sql語句,需要的朋友可以參考下2015-01-01sql server中判斷表或臨時(shí)表是否存在的方法
這篇文章主要介紹了sql server中判斷表或臨時(shí)表是否存在的方法,需要的朋友可以參考下2015-11-11SQL Server 2008 正式版安裝指南 包含序列號(hào)
和Visual Studio 2008一樣,從官網(wǎng)下載SQL Server 2008的180天試用版其實(shí)與正式版內(nèi)容是基本相同的,唯一的區(qū)別就在于安裝配置文件中所包含的key。各種版本的SQL Server是完全一樣的。2009-02-02SQL server使用自定義函數(shù)以及游標(biāo)
最近忙于動(dòng)態(tài)監(jiān)測(cè)軟件的開發(fā),處理有關(guān)標(biāo)準(zhǔn)宗地編碼和區(qū)段編碼關(guān)系,關(guān)系如下表所示2011-10-10sql server判斷數(shù)據(jù)庫、表、列、視圖是否存在
這篇文章主要介紹了sql server判斷數(shù)據(jù)庫、表、列、視圖是否存在的方法,需要的朋友可以參考下2014-07-07