|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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缺少了一些人们想要的功能。 |
|