SQL Server Management Studio 有个模板资源管理器,不知你用过没有?使用模板创建脚本、自定义模板等功能能大大提高你的工作效率,如果没有尝试过,赶紧去试试吧。很多时候,我们习惯了手写脚本,而不愿意花费精力去研究陌生的工具。


 


 

你可以在通过下面方式打开模板资源管理器  视图->模板资源管理器; 也可以通过快捷键CTRL + ALT + T打开它。如图所示,你可以看见里面已经包含了许多模板了。


 

sql server资源调控器 sql配置资源管理器_Server


 


 

你可以点击任何一个模板,查看它的属性,就可以知道这些模板存储在那个地方了,我本地数据的模板存储在C:\Documents and Settings\Administrator\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell\Templates\Sql  目录下面。


 

模板资源管理器下有SQL Server模板、Analysis Services模板、SQL Server Compact Edition模板三种类型。

在创建自己的模板前,我们来看看系统提供的一些模板. 打开目录Stored Procedure,选择Create Procedure Basic Template 双击打开,如下图所示


Create Procedure Basic Template 
  
--      ============================================= 
    
     -- 
     Create basic stored procedure template 
    
     -- 
     ============================================= 
    
     
     -- 
     Drop stored procedure if it already exists 
    
     IF 
      
    EXISTS 
     (
       SELECT 
      
    * 
     
         FROM 
     INFORMATION_SCHEMA.ROUTINES 
        WHERE 
     SPECIFIC_SCHEMA  
    = 
     N 
    ' 
    <Schema_Name, sysname, Schema_Name> 
    ' 
    
          AND 
     SPECIFIC_NAME  
    = 
     N 
    ' 
    <Procedure_Name, sysname, Procedure_Name> 
    ' 
     
     )
        DROP 
      
    PROCEDURE 
      
    < 
    Schema_Name, sysname, Schema_Name 
    > 
    . 
    < 
    Procedure_Name, sysname, Procedure_Name 
    > 
    
     GO 
    

     CREATE 
      
    PROCEDURE 
      
    < 
    Schema_Name, sysname, Schema_Name 
    > 
    . 
    < 
    Procedure_Name, sysname, Procedure_Name 
    > 
    
         < 
    @param1 
    , sysname,  
    @p1 
    > 
      
    < 
    datatype_for_param1, ,  
    int 
    > 
      
    = 
      
    < 
    default_value_for_param1, ,  
    0 
    > 
    , 
         < 
    @param2 
    , sysname,  
    @p2 
    > 
      
    < 
    datatype_for_param2, ,  
    int 
    > 
      
    = 
      
    < 
    default_value_for_param2, ,  
    0 
    > 
    
     AS 
    
         SELECT 
      
    @p1 
    ,  
    @p2 
    
     GO 
    

     -- 
     ============================================= 
    
     -- 
     Example to execute the stored procedure 
    
     -- 
     ============================================= 
    
     EXECUTE 
      
    < 
    Schema_Name, sysname, Schema_Name 
    > 
    . 
    < 
    Procedure_Name, sysname, Procedure_Name 
    > 
      
    < 
    value_for_param1, ,  
    1 
    > 
    ,  
    < 
    value_for_param2, ,  
    2 
    > 
    
     GO

 

 

然后你在查询菜单下选择“指定模板参数的值”,快捷键(CTRL + SHIFT + M),弹出如下窗台,你可以定义存储过程名、参数以及参数的默认值等(如下图所示),

 

 

定义完后,单击确定,就可以得到如下你想要的存储过程基本定义,然后填写自己的逻辑代码,避免了从头开始一步一步重写。减少不必要的重复劳动。最重要的是它能灵活的定义你自己想要的模板名称。下面来看看一步步定义自己的模板。如图所示:我们首先新建一个名为“Kerry Stored Procedure”的文件夹,然后点击文件夹,新建名为“Create Procedure Basic Template”的模板

 

右键单击新模板,然后单击“编辑”。在“连接到数据库引擎”对话框中,单击“连接”在查询编辑器中打开新模板。

在查询编辑器中创建一个脚本。按照 <parameter_name, data_type, value> 格式在脚本中插入参数。数据类型和数据值区域必须存在,但是可以为空。

在工具栏上,单击“保存”以保存新模板。

这样一个新的模板就建立了,如下所示

自定义的存储过程模板   
USE           [     MyAssistant 
    ] 
    
     GO     

     SET      ANSI_NULLS      ON 
    
     GO     

     SET      QUOTED_IDENTIFIER      ON 
    
     GO     

     IF           OBJECT_ID 
    ( 
    ' 
    <Procedure_Name> 
    ' 
    , N 
    ' 
    P 
    ' 
    )  
    IS 
      
    NOT 
      
    NULL 
     
     BEGIN     
         DROP           PROC 
      
    < 
    Procedure_Name 
    > 
    ;
     END     
     GO     

     --     ====================================================================================================     
     --           :        ........................... 
    
     --             Author                :        Kerry     
     --             Create    Date        :        2010-08-11     
     --             Description           :        ...........................。     
     --     ----------------------------------------------------------------------------------------------------     
     --             2010-08-12                    修改了.....删除了..........         
     --     ====================================================================================================     
     CREATE           PROCEDURE 
      
    < 
    Schema_Name, sysname, Schema_Name 
    > 
    . 
    < 
    Procedure_Name, sysname, Procedure_Name 
    > 
    
         <     @param1     , sysname,  
    @p1 
    > 
      
    < 
    datatype_for_param1, ,  
    int 
    > 
      
    = 
      
    < 
    default_value_for_param1, ,  
    0 
    > 
    , 
         <     @param2     , sysname,  
    @p2 
    > 
      
    < 
    datatype_for_param2, ,  
    int 
    > 
      
    = 
      
    < 
    default_value_for_param2, ,  
    0 
    > 
    
     AS     

     SET      NOCOUNT      ON 
    ;
     BEGIN      TRY


     END      TRY

     BEGIN      CATCH
         SELECT        ERROR_NUMBER()             AS 
     ErrorNumber  
                 ,ERROR_SEVERITY()           AS      ErrorSeverity
                 ,ERROR_STATE()              AS      ErrorState
                 ,ERROR_PROCEDURE()          AS      ErrorProcedure
                 ,ERROR_LINE()               AS      ErrorLine
                 ,ERROR_MESSAGE()            AS      ErrorMessage;
     END      CATCH

     GO


当你要定义一个存储过程的时候,就可以像上面那样创建一个新的存储过程,当然,如果你不习惯上面哪种定义参数的方式,你也可以用下面的方式,把存储过程名、参数等命名为一个特定的存储过程,新建存储过程时、手动在打开的模板里面修改。如下所示,这个可以视个人习惯而定。

代码

 

 

USE   [ MyAssistant ]
GO

SET  ANSI_NULLS  ON
GO

SET  QUOTED_IDENTIFIER  ON
GO

IF   OBJECT_ID ( ' USP_StoreProcedureName ' , N ' P ' )  IS   NOT   NULL  
BEGIN
     DROP   PROC  USP_StoreProcedureName;
END
GO

-- ====================================================================================================
--         Function              :        ...........................
--         Author                :        Kerry
--         Create    Date        :        2010-08-11
--         Description           :        ...........................。
-- ----------------------------------------------------------------------------------------------------
--         2010-08-12                    修改了.....删除了..........    
-- ====================================================================================================
CREATE   PROCEDURE   [ dbo ] . [ USP_StoreProcedureName ]
     @StartTime              DATETIME ,
     @EndTime                DATETIME ,
     @CstartTime             DATETIME ,
     @CendTime               DATETIME
AS
SET NOCOUNT ON;

BEGIN TRY


END TRY

BEGIN CATCH
    SELECT   ERROR_NUMBER()        AS ErrorNumber  
            ,ERROR_SEVERITY()      AS ErrorSeverity
            ,ERROR_STATE()         AS ErrorState
            ,ERROR_PROCEDURE()     AS ErrorProcedure
            ,ERROR_LINE()          AS ErrorLine
            ,ERROR_MESSAGE()       AS ErrorMessage;
END CATCH

GO