sql server動態(tài)存儲過程按日期保存數(shù)據(jù)示例
在項目中經(jīng)常有大量數(shù)據(jù)信息保存到數(shù)據(jù)庫,如只用一張表保存那肯定不現(xiàn)實,首選解決方案為按日期建立動態(tài)表來保存數(shù)據(jù)。在不改變保存方式的代碼的情況下,用動態(tài)存儲過程是首選,在sql server存儲過程中進行日期計算,按日期建表效率最高,下面就公司項目的部分動態(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è)務進行邏輯處理后插入動態(tài)表
- 用非動態(tài)SQL Server SQL語句來對動態(tài)查詢進行執(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 支持定位當前頁,自定義排序的分頁SQL(拒絕動態(tài)SQL)
- SQL Server中執(zhí)行動態(tài)SQL
相關(guān)文章
SqlServer快速檢索某個字段在哪些存儲過程中(sql 語句)
本文給大家分享一段sql語句實現(xiàn)SqlServer快速檢索某個字段在哪些存儲過程中,代碼非常簡單,需要的朋友參考下2017-03-03
SQL Server 使用觸發(fā)器(trigger)發(fā)送電子郵件步驟詳解
本文分步驟給大家詳細介紹了SQL Server 使用觸發(fā)器(trigger)發(fā)送電子郵件的方法,需要的朋友可以參考下2017-04-04
在Windows XP系統(tǒng)安裝SQL server 2000 企業(yè)版(圖解版)
今天在網(wǎng)上下載一個軟件,需要使用MS SQL,海波用的是 Windows XP Professional(專業(yè)) 版系統(tǒng),而SQL卻是企業(yè)版。安裝的時候提示我只能安裝客戶端,服務程序卻不能安裝。海波在網(wǎng)上搜索到了一些方法,設置成功了2014-07-07
SQL Server阻止保存修改表結(jié)構(gòu)的解決方法
修改DeUser表中列的數(shù)據(jù)類型從varchar修改為int時,進行保存時彈出的提示框,阻止保存修改表結(jié)構(gòu),怎么辦?這篇文章就為大家詳細介紹了解決SQL Server阻止保存修改表結(jié)構(gòu)問題的方法,感興趣的小伙伴們可以參考一下2016-05-05
SQL對數(shù)據(jù)進行按月統(tǒng)計或?qū)?shù)據(jù)進行按星期統(tǒng)計的實例代碼
這篇文章主要介紹了SQL對數(shù)據(jù)進行按月統(tǒng)計或?qū)?shù)據(jù)進行按星期統(tǒng)計的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08

