老尸 发表于 2015-1-16 22:51:55

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.[+@chvFinalTableName8+](
+(12)COLLATEChinese_PRC_CI_ASNOTNULL,
+NOTNULL,
+(9)COLLATEChinese_PRC_CI_ASNOTNULL,
+(9)COLLATEChinese_PRC_CI_ASNOTNULL,
+(1)COLLATEChinese_PRC_CI_ASNOTNULL,
+(3)COLLATEChinese_PRC_CI_ASNOTNULL,
+NULL,
+(200)COLLATEChinese_PRC_CI_ASNULL,
+(200)COLLATEChinese_PRC_CI_ASNULL,
+NULL,
+NULL,
+CONSTRAINT+@chvFinalTableName8+_PK+PRIMARYKEYCLUSTERED()ON
+)ON
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:21

sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西

飘飘悠悠 发表于 2015-1-24 11:23:06

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的

精灵巫婆 发表于 2015-2-1 06:53:08

sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西

简单生活 发表于 2015-2-7 01:32:00

至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。

透明 发表于 2015-2-19 08:59:01

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

活着的死人 发表于 2015-3-6 14:31:47

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

金色的骷髅 发表于 2015-3-13 02:08:29

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

深爱那片海 发表于 2015-3-20 09:43:35

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
页: [1]
查看完整版本: MYSQL网页设计使用存储历程按月建数据表