sql server動(dòng)態(tài)存儲(chǔ)過(guò)程按日期保存數(shù)據(jù)示例
在項(xiàng)目中經(jīng)常有大量數(shù)據(jù)信息保存到數(shù)據(jù)庫(kù),如只用一張表保存那肯定不現(xiàn)實(shí),首選解決方案為按日期建立動(dòng)態(tài)表來(lái)保存數(shù)據(jù)。在不改變保存方式的代碼的情況下,用動(dòng)態(tài)存儲(chǔ)過(guò)程是首選,在sql server存儲(chǔ)過(guò)程中進(jìn)行日期計(jì)算,按日期建表效率最高,下面就公司項(xiàng)目的部分動(dòng)態(tài)存儲(chǔ)過(guò)程粘貼出來(lái):
-----sql語(yǔ)句:
ALTER proc [dbo].[EventInsert]
@chrTagData varchar(50), --編號(hào)
@intEData int,
@chrJZData varchar(50),
@intDYData int,
@intXHData int,
@createdata datetime,
@chrtype varchar(1) --查詢(xún)條件
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語(yǔ)句來(lái)對(duì)動(dòng)態(tài)查詢(xún)進(jìn)行執(zhí)行
- SQL SERVER 中構(gòu)建執(zhí)行動(dòng)態(tài)SQL語(yǔ)句的方法
- 分享一下SQL Server執(zhí)行動(dòng)態(tài)SQL的正確方式
- sqlserver 動(dòng)態(tài)創(chuàng)建臨時(shí)表的語(yǔ)句分享
- asp.net Menu控件+SQLServer實(shí)現(xiàn)動(dòng)態(tài)多級(jí)菜單
- sqlserver 存儲(chǔ)過(guò)程動(dòng)態(tài)參數(shù)調(diào)用實(shí)現(xiàn)代碼
- sqlserver 支持定位當(dāng)前頁(yè),自定義排序的分頁(yè)SQL(拒絕動(dòng)態(tài)SQL)
- SQL Server中執(zhí)行動(dòng)態(tài)SQL
相關(guān)文章
SqlServer快速檢索某個(gè)字段在哪些存儲(chǔ)過(guò)程中(sql 語(yǔ)句)
本文給大家分享一段sql語(yǔ)句實(shí)現(xiàn)SqlServer快速檢索某個(gè)字段在哪些存儲(chǔ)過(guò)程中,代碼非常簡(jiǎn)單,需要的朋友參考下2017-03-03
SQL Server 的 SQL 語(yǔ)句導(dǎo)入導(dǎo)出大全
SQL Server 的 SQL 語(yǔ)句導(dǎo)入導(dǎo)出大全...2006-12-12
SQL Server 使用觸發(fā)器(trigger)發(fā)送電子郵件步驟詳解
本文分步驟給大家詳細(xì)介紹了SQL Server 使用觸發(fā)器(trigger)發(fā)送電子郵件的方法,需要的朋友可以參考下2017-04-04
sql server 創(chuàng)建臨時(shí)表的使用說(shuō)明
這篇文章主要介紹了sql server 創(chuàng)建臨時(shí)表的使用說(shuō)明,需要的朋友可以參考下2015-11-11
在Windows XP系統(tǒng)安裝SQL server 2000 企業(yè)版(圖解版)
今天在網(wǎng)上下載一個(gè)軟件,需要使用MS SQL,海波用的是 Windows XP Professional(專(zhuān)業(yè)) 版系統(tǒng),而SQL卻是企業(yè)版。安裝的時(shí)候提示我只能安裝客戶(hù)端,服務(wù)程序卻不能安裝。海波在網(wǎng)上搜索到了一些方法,設(shè)置成功了2014-07-07
SQL Server阻止保存修改表結(jié)構(gòu)的解決方法
修改DeUser表中列的數(shù)據(jù)類(lèi)型從varchar修改為int時(shí),進(jìn)行保存時(shí)彈出的提示框,阻止保存修改表結(jié)構(gòu),怎么辦?這篇文章就為大家詳細(xì)介紹了解決SQL Server阻止保存修改表結(jié)構(gòu)問(wèn)題的方法,感興趣的小伙伴們可以參考一下2016-05-05
SQL對(duì)數(shù)據(jù)進(jìn)行按月統(tǒng)計(jì)或?qū)?shù)據(jù)進(jìn)行按星期統(tǒng)計(jì)的實(shí)例代碼
這篇文章主要介紹了SQL對(duì)數(shù)據(jù)進(jìn)行按月統(tǒng)計(jì)或?qū)?shù)據(jù)進(jìn)行按星期統(tǒng)計(jì)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08

