仓酷云

标题: MYSQL网页设计使用存储历程按月建数据表 [打印本页]

作者: 老尸    时间: 2015-1-16 22:51
标题: MYSQL网页设计使用存储历程按月建数据表
MySQL采用双重授权(DualLicensed),它们是GPL和MySQLAB制定的商业许可协议。存储历程|数据
为了便利数据库的存储、数据的备份、恢复,在实践建库中,我们但愿可以依据详细的年代创建数据表,比方,事务表我们能够创建为EV_yyyymm(yyyy为年份,mm为月份),利用存储历程能够办理静态建表。(源代码以下:)

****************************************************
***存储历程原码***
****************************************************

====天生表的存储历程prCreateDateTable===
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSOFF
GO

ALTERPROCEDUREprCreateDateTable
AS
--初始化
DECLARE@intErrorCodeint,--毛病号,乐成显现0
@dtmCheckDaydatetime,--体系以后工夫
@strvarchar(40),@SubStrvarchar(10),
@chrnSQLnvarchar(1000)--SQL查询语句
DECLARE@chvSuffixTableNamevarchar(50),--表称号的日期后缀
@chvFinalTableName1varchar(40),--待检测的表称号
@chvFinalTableName2varchar(40),
@chvFinalTableName3varchar(40),
@chvFinalTableName4varchar(40),
@chvFinalTableName5varchar(40),
@chvFinalTableName6varchar(40),
@chvFinalTableName7varchar(40),
@chvFinalTableName8varchar(40)

SELECT@dtmCheckDay=getdate()
SELECT@chvSuffixTableName=dbo.fnFormatDate_month(@dtmCheckDay)---取格局化后的月用到自界说函数

SELECT@chvFinalTableName1=EV_+_+@chvSuffixTableName

--查询有没有@chvTableName_XXXXXX(年代),即@chvFinalTableName表,假如没有则创建
BEGIN
IFNOTEXISTS(SELECT*FROMsysobjectsWHERENAME=@chvFinalTableName1ANDxtype=U)--事务表
BEGIN
SELECT@chrnSQL=CREATETABLE[dbo].[+@chvFinalTableName8+](
+[EVID][char](12)COLLATEChinese_PRC_CI_ASNOTNULL,
+[StarTime][datetime]NOTNULL,
+[StarStake][varchar](9)COLLATEChinese_PRC_CI_ASNOTNULL,
+[EndStake][varchar](9)COLLATEChinese_PRC_CI_ASNOTNULL,
+[Direcation][char](1)COLLATEChinese_PRC_CI_ASNOTNULL,
+[EvType][varchar](3)COLLATEChinese_PRC_CI_ASNOTNULL,
+[EndTime][datetime]NULL,
+[Description][varchar](200)COLLATEChinese_PRC_CI_ASNULL,
+[Advice][varchar](200)COLLATEChinese_PRC_CI_ASNULL,
+[EconLoss][int]NULL,
+[DeathToll][tinyint]NULL,
+CONSTRAINT+@chvFinalTableName8+_PK+PRIMARYKEYCLUSTERED([EVID])ON[PRIMARY]
+)ON[PRIMARY]
EXECsp_ExecuteSql@chrnSQL
END
END;

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

===失掉日期的自界说函数====
SETQUOTED_IDENTIFIERON
GO
SETANSI_NULLSON
GO

ALTERFUNCTIONfnFormatDate_Month(@DATEdatetime)
RETURNSvarchar(50)
AS
BEGIN
declare@intDateYearint,---必要处置数据的年份
@intDateMonthNoint---必要处置数据的月份
declare@chvMonthNovarchar(10),
@chvTableNamevarchar(50)

select@intDateYear=year(@DATE)
select@intDateMonthNo=month(@DATE)select@chvMonthNo=00+convert(varchar(2),@intDateMonthNo)
select@chvMonthNo=substring(@chvMonthNo,len(@chvMonthNo)-1,2
select@chvTableName=convert(varchar(4),@intDateYear)+@chvMonthNo
return(@chvTableName)
END

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO
============================================================

刚卒业,做软件,初学利用存储历程。
对于IT经理来说,令他们喜欢的MySQL的简单性还有另一方面。MySQL可以运行的更快速。某些人或许会说MySQL缺少了一些人们想要的功能。
作者: 兰色精灵    时间: 2015-1-19 07:45
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
作者: 飘飘悠悠    时间: 2015-1-24 11:23
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
作者: 精灵巫婆    时间: 2015-2-1 06:53
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
作者: 简单生活    时间: 2015-2-7 01:32
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
作者: 透明    时间: 2015-2-19 08:59
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
作者: 活着的死人    时间: 2015-3-6 14:31
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
作者: 金色的骷髅    时间: 2015-3-13 02:08
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
作者: 深爱那片海    时间: 2015-3-20 09:43
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2