sql server動態(tài)存儲過程按日期保存數(shù)據(jù)示例
在項目中經(jīng)常有大量數(shù)據(jù)信息保存到數(shù)據(jù)庫,如只用一張表保存那肯定不現(xiàn)實,首選解決方案為按日期建立動態(tài)表來保存數(shù)據(jù)。在不改變保存方式的代碼的情況下,用動態(tài)存儲過程是首選,在sql server存儲過程中進(jìn)行日期計算,按日期建表效率最高,下面就公司項目的部分動態(tài)存儲過程粘貼出來:
-----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) --每日原始數(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ù)實際業(yè)務(wù)進(jìn)行邏輯處理后插入動態(tài)表
- 用非動態(tài)SQL Server SQL語句來對動態(tài)查詢進(jìn)行執(zhí)行
- SQL SERVER 中構(gòu)建執(zhí)行動態(tài)SQL語句的方法
- 分享一下SQL Server執(zhí)行動態(tài)SQL的正確方式
- sqlserver 動態(tài)創(chuàng)建臨時表的語句分享
- asp.net Menu控件+SQLServer實現(xiàn)動態(tài)多級菜單
- sqlserver 存儲過程動態(tài)參數(shù)調(diào)用實現(xiàn)代碼
- sqlserver 支持定位當(dāng)前頁,自定義排序的分頁SQL(拒絕動態(tài)SQL)
- SQL Server中執(zhí)行動態(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í)行計劃來分析,得出最佳的語句的寫法。2010-06-06SQL server使用自定義函數(shù)以及游標(biāo)
最近忙于動態(tài)監(jiān)測軟件的開發(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