数据库

本类阅读TOP10

·SQL语句导入导出大全
·Power Designer杂记
·SQL Server日期计算
·常用的oracle函数使用说明(一)
·sqlserver2000数据库置疑的解决方法
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·SQL to Excel 的应用
·SQL语句导入导出大全
·Error:ORA-01033:ORACLE initialization or shutdown in progress错误解决
·Oracle中password file的作用及说明

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
应用存储过程按月建数据表

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

        为了方便数据库的存储、数据的备份、恢复,在实际建库中,我们希望能够根据具体的年月建立数据表,例如,事件表我们可以建立为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 NOT EXISTS (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
============================================================

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




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有