中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 数据库区 -> MSSQL -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ACCESS · MSSQL
· Mysql · DB2
· ORACLE · SYBASE
· 其他相关
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
应用存储过程按月建数据表
作者:佚名  来源:不详  发布时间:2006-5-9 16:45:55  发布人:chinazhan

 减小字体 增大字体



为了方便数据库的存储、数据的备份、恢复,在实际建库中,我们希望能够根据具体的年月建立数据表,例如,事件表我们可以建立为EV_yyyymm(yyyy为年份,mm为月份),使用存储过程可以解决动态建表。(源代码如下:)

****************************************************
*** 存储过程原码 ***
****************************************************

====生成表的存储过程prCreateDateTable===
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

ALTER PROCEDURE prCreateDateTable
AS
--初始化
DECLARE @intErrorCode int, --错误号,成功显示0
@dtmCheckDay datetime, --系统当前时间
@str varchar(40),@SubStr varchar(10),
@chrnSQL nvarchar(1000) --SQL查询语句
DECLARE @chvSuffixTableName varchar(50), --表名称的日期后缀
@chvFinalTableName1 varchar(40), --待检测的表名称
@chvFinalTableName2 varchar(40),
@chvFinalTableName3 varchar(40),
@chvFinalTableName4 varchar(40),
@chvFinalTableName5 varchar(40),
@chvFinalTableName6 varchar(40),
@chvFinalTableName7 varchar(40),
@chvFinalTableName8 varchar(40)

SELECT @dtmCheckDay = getdate()
SELECT @chvSuffixTableName = dbo.fnFormatDate_month(@dtmCheckDay) ---取格式化后的月用到自定义函数

SELECT @chvFinalTableName1 = 'EV_' + '_' + @chvSuffixTableName

--查询有无@chvTableName_XXXXXX(年月),即@chvFinalTableName表,如果没有则建立
BEGIN
IF NOTEXISTS (SELECT * FROM sysobjects WHERE NAME = @chvFinalTableName1 AND xtype='U') -- 事件表
BEGIN
SELECT @chrnSQL=' CREATE TABLE [dbo].['+ @chvFinalTableName8 +']( '
+'[EVID] [char] (12) COLLATE Chinese_PRC_CI_AS NOT NULL ,'
+'[StarTime] [datetime] NOT NULL ,'
+'[StarStake] [varchar] (9) COLLATE Chinese_PRC_CI_AS NOT NULL ,'
+'[EndStake] [varchar] (9) COLLATE Chinese_PRC_CI_AS NOT NULL ,'
+'[Direcation] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL ,'
+'[EvType] [varchar] (3) COLLATE Chinese_PRC_CI_AS NOT NULL ,'
+'[EndTime] [datetime] NULL ,'
+'[Description] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,'
+'[Advice] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,'
+'[EconLoss] [int] NULL ,'
+'[DeathToll] [tinyint] NULL, '
+' CONSTRAINT '+ @chvFinalTableName8 +'_PK '+' PRIMARY KEY CLUSTERED ([EVID]) ON [PRIMARY]'
+') ON [PRIMARY]'
EXEC sp_ExecuteSql @chrnSQL
END
END;

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

===得到日期的自定义函数====
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER FUNCTION fnFormatDate_Month (@DATE datetime)
RETURNS varchar(50)
AS
BEGIN
declare @intDateYear int, ---需要处理数据的年份
@intDateMonthNo int ---需要处理数据的月份
declare @chvMonthNo varchar(10) ,
@chvTableName varchar(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
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
============================================================

刚毕业,做软件,初学使用存储过程。


   asp">存储过程
 
[] [返回上一页] [打 印] [收 藏]
上一篇文章:ASP调用oracle存储过程
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .