贴几个最近写的几个sp

-- 1.每天创建第二天的表,删除三个月前的表
/*----------------------------------------------------------------------------
Author : HsuChong                                        
Date   : 2007-08-25 15:20                                      
Desc   : uspCreateTomorrowTable
------------------------------------------------------------------------------
*/

CREATE   PROCEDURE  uspCreateTomorrowTable
    
@sOriginalTableName  sysname
AS
BEGIN
    
SET  NOCOUNT  ON  ;

    
DECLARE   @sExecSQL   varchar ( 8000 ),
            
@sNewTableName  sysname,
            
@sOldTableName  sysname,
            
@tempDate   char ( 8 );

    
BEGIN  TRY 
        
-- 创建明天的表        
         SET   @tempDate   =   CONVERT ( CHAR ( 8 ), GETDATE (), 112 );
        
SET   @sNewTableName   =   @sOriginalTableName   +   @tempDate ;
        
SET   @sExecSQL   =   ' IF NOT EXISTS(SELECT 1 FROM sysobjects  '
            
+   '  WHERE ID = OBJECT_ID( ''' + @sNewTableName + ''' )) '
            
+   '  SELECT * INTO  '   +   @sNewTableName  
            
+   '  FROM  ' +   @sOriginalTableName   + '  WHERE 1<> 1 ' ;

        
EXEC ( @sExecSQL );

        
-- 删除三个月(90天)前的表
         SET   @tempDate   =   CONVERT ( CHAR ( 8 ), GETDATE () - 90 , 112 );
        
SET   @sOldTableName   =   @sOriginalTableName   +   @tempDate ;
        
SET   @sExecSQL   =   ' IF EXISTS(SELECT 1 FROM sysobjects  '
            
+   '  WHERE ID = OBJECT_ID( '''   +   @sOldTableName   +   ''' )) '
            
+   '  DROP TABLE  '   +   @sOldTableName  ;

        
EXEC ( @sExecSQL );

    
END  TRY
    
BEGIN  CATCH 
        
EXECUTE  dbo.uspLogError;
    
END  CATCH 
END ;

-- 2.联合查询两个表中的数据
/*-----------------------------------------------------------------------------------
Author : HsuChong                                        
Date   : 2007-08-24                                          
Desc   : uspGetPlanetDataEX
----------------------------------------------------------------------------------
*/

CREATE   PROCEDURE  uspGetPlanetDataEX
    
@VehicleSN              varchar ( 20 =   NULL ,     --  车机SN
     @BeginTime              varchar ( 50 =   NULL ,     --  开始时间
     @EndTime              varchar ( 50 =   NULL ,     --  结束时间
     @FiterNavigation      bit   =   1 ,             --  是否过滤信号弱数据:1=过滤,0=不过滤
     @FiterSpeed              bit   =   1 ,             --  是否过滤0速度数据 :1=过滤,0=不过滤
     @FiterInvalidData      bit   =   1               --  是否过滤非法数据(速度超过107海里/小时,方向大于不在0-360范围内等)
                                             --  1=过滤,0=不过滤
AS  
BEGIN
    
SET  NOCOUNT  ON ;

    
DECLARE   @sExecSQL   varchar ( 4000 ),
            
@sMainSQL   varchar ( 1000 ),
            
@sCondition   varchar ( 4000 ),
            
@sOriginalTableName  sysname,
            
@sTableName1  sysname,
            
@sTableName2  sysname,
            
@beginDate   datetime ,
            
@EndDate   datetime ,
            
@tempDate   char ( 8 ),
            
@DayCount   int ;

    
BEGIN  TRY 
        
SET   @sOriginalTableName   =   ' PlanetData ' ;
        
SET   @sMainSQL   =   ' SELECT SystemTime,PlanetTime, '
            
+   '  Longitude,Latitude,Speed,Direction, '
            
+   '  OverSpeed,LoadedOn,PowerOn,IsNavigation  '
            
+   '  FROM  ' ;

        
SET   @beginDate   =   CAST ( @BeginTime   AS   datetime );
        
SET   @EndDate   =   CAST ( @EndTime   AS   datetime );
        
SET   @DayCount   =   DATEDIFF ( DAY , @BeginDate , @EndDate );

        
-- 只允许查询两天内的数据
         IF   @DayCount   >   1
            
RETURN ;

        
SET   @tempDate   =   CONVERT ( CHAR ( 8 ), @beginDate , 112 );
        
SET   @sTableName1   =   @sOriginalTableName   +   @tempDate ;
        
SET   @tempDate   =   CONVERT ( CHAR ( 8 ), @EndDate , 112 );
        
SET   @sTableName2   =   @sOriginalTableName   +   @tempDate ;
        
SET   @sCondition   =   '  AND (VehicleSN  = ' +   @VehicleSN   + ' ) ' ;

        
IF   @FiterNavigation   =   1   
            
SET   @sCondition   =   @sCondition   +   '  AND (IsNavigation=1) '  ;
        
IF   @FiterSpeed   =   1  
            
SET   @sCondition   =   @sCondition   +   '  AND (Speed>0)  '  ;    
        
IF   @FiterInvalidData   =   1
            
SET   @sCondition   =   @sCondition  
                
+   '  AND (Direction BETWEEN 0 AND 360)  '
                
+   '  AND (Speed BETWEEN 0 AND 107)  '  
                
+   '  AND (Longitude > 0) AND (Latitude >0) ' ;

        
SET   @sCondition   =   @sCondition   ;

        
IF   @DayCount   >   0  
        
BEGIN  
            
SET   @sExecSQL   =   @sMainSQL   +   @sTableName1   
                
+   '  WHERE (SystemTime >=  ''' +   @BeginTime   + ''' ) '   +   @sCondition
                
+   '  UNION ALL  '
                
+   @sMainSQL   +   @sTableName2   
                
+   '  WHERE (SystemTime <=  ''' +   @EndTime   + ''' ) '   +   @sCondition ;
        
END
        
ELSE  
        
BEGIN
            
SET   @sExecSQL   =   @sMainSQL   +   @sTableName1   
                
+   '  WHERE (SystemTime BETWEEN  '''
                
+   @BeginTime   + '''  AND  ''' + @EndTime + ''' ) ' +   @sCondition ;
        
END ;

        
-- 2007-08-27 之前还没有分表
         IF   @BeginTime   < ' 2007-08-27 '
        
BEGIN
            
SET   @sExecSQL   =   @sMainSQL   +   @sOriginalTableName   
                
+   '  WHERE (SystemTime BETWEEN  '''
                
+   @BeginTime   + '''  AND  ''' + @EndTime + ''' ) ' +   @sCondition ;
        
END
        
SET   @sExecSQL   =   @sExecSQL   +   '  ORDER BY SystemTime ' ;

        
PRINT   @sExecSQL -- -just for test only
         EXEC ( @sExecSQL );

    
END  TRY 
    
BEGIN  CATCH 
         
EXECUTE  dbo.uspLogError;
    
END  CATCH
END ;

-- 3.创建分区表(MS SQL2005)
--
 =================================================================
--
 Author      : HsuChong@hotmail.com
--
 Create date: 2007-07-10 
--
 Description: Make Partitioned Tables
--
 =================================================================
CREATE   PROCEDURE  uspMakePartitionedTables
    
@bExecute   bit   =   0
AS  
BEGIN
    
DECLARE   @tempDate   char ( 8 ),
        
@sSQL   varchar ( 8000 ),
        
@sCRLF   char ( 2 ),
        
@sTAB   char ( 1 ),
        
@PartitionFunctionName   varchar ( 50 ),
        
@PartitionSchemeName   varchar ( 50 ),
        
@PartitionTableName   varchar ( 50 ),
        
@PartitionLine1   varchar ( 50 ),
        
@PartitionLine2   varchar ( 50 ),
        
@PartitionLine3   varchar ( 50 ),
        
@PartitionLine4   varchar ( 50 ),
        
@PartitionLine5   varchar ( 50 );

    
BEGIN  TRY
        
SET   @sTAB   =   char ( 9 );
        
SET   @sCRLF   =   char ( 13 +   char ( 10 );

        
SET   @tempDate   =   CONVERT ( char ( 8 ), getdate () + 1 , 112 );
        
SET   @PartitionFunctionName   =   ' OneDayDateRangePFN ' + @tempDate ;
        
SET   @PartitionSchemeName   =   ' OneDayDateRangePScheme ' + @tempDate ;
        
SET   @PartitionTableName   =   ' GPSData ' + @tempDate ;

        
SET   @PartitionLine1   =   ''''   +   @tempDate   +   '  05:59:59.997 ' + '''' ;
        
SET   @PartitionLine2   =   ''''   +   @tempDate   +   '  10:59:59.997 ' + '''' ;
        
SET   @PartitionLine3   =   ''''   +   @tempDate   +   '  14:59:59.997 ' + '''' ;
        
SET   @PartitionLine4   =   ''''   +   @tempDate   +   '  18:59:59.997 ' + '''' ;
        
SET   @PartitionLine5   =   ''''   +   @tempDate   +   '  23:59:59.997 ' + '''' ;

        
-- 1.Create the partition function
         SET   @sSQL   =   ' CREATE PARTITION FUNCTION  '   +   @PartitionFunctionName + ' (datetime) ' + @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   ' AS ' + @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   ' RANGE LEFT FOR VALUES( ' + @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   @PartitionLine1   +   ' , '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   @PartitionLine2   +   ' , '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   @PartitionLine3   +   ' , '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   @PartitionLine4   +   ' , '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   @PartitionLine5   +   ' ) '   +   @sCRLF   +   @sCRLF ;
        
-- SET @sSQL = @sSQL + 'GO' + @sCRLF; -- I did not know why the use 'GO' will be syntax error.

        
-- 2.Create the partition scheme
         SET   @sSQL   =   @sSQL   +   ' CREATE PARTITION SCHEME  '   +   @PartitionSchemeName   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   ' AS ' + @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   ' PARTITION  ' +   @PartitionFunctionName   +   '  TO ( ' +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' [FG1], [FG2], [FG3], [FG4], [FG5], [PRIMARY]) '   +   @sCRLF   +   @sCRLF ;
        
-- SET @sSQL = @sSQL + 'GO' + @sCRLF;

        
-- 3.Create the table 
         SET   @sSQL   =   @sSQL   +   ' CREATE TABLE  ' + @PartitionTableName +   ' ( ' + @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' TerminalID    dbo.TerminalCode NOT NULL, ' + @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' SystemTime    datetime NOT NULL DEFAULT (getdate()), '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' GPSTime datetime NOT NULL DEFAULT(getdate()), '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' IsNavigation bit NOT NULL DEFAULT((0)), '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' Longitude float NOT NULL DEFAULT((0)), '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' Latitude float NOT NULL DEFAULT((0)), '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' Speed smallint NOT NULL DEFAULT((0)), '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' LoadedOn bit NULL DEFAULT((0)), '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   @sTAB   +   ' PowerOn bit NULL DEFAULT((0)) '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   ' ) ON  ' +   @PartitionSchemeName   +   ' (SystemTime) ' +   @sCRLF   +   @sCRLF ;
        
-- SET @sSQL = @sSQL + 'GO' + @sCRLF; 

        
-- 4.Create the clustered indexes as Primary keys
         SET   @sSQL   =   @sSQL   +   ' ALTER TABLE  ' +   @PartitionTableName + @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   ' ADD CONSTRAINT  ' +   @PartitionTableName   +   ' PK '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   ' PRIMARY KEY CLUSTERED (SystemTime,TerminalID) '   +   @sCRLF ;
        
SET   @sSQL   =   @sSQL   +   ' ON  ' +   @PartitionSchemeName   +   ' (SystemTime) '   +   @sCRLF ;
        
-- SET @sSQL = @sSQL + 'GO' + @sCRLF;

        
PRINT   @sSQL ;
        
IF   @bExecute   =   1  
            
EXEC  ( @sSQL );
    
END  TRY
    
BEGIN  CATCH
        
EXECUTE  dbo.uspLogError;
    
END  CATCH;
END ;

-- Just for test
--
EXEC uspMakePartitionedTables
--
or 
--
EXEC uspMakePartitionedTables 1

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值