SQL Server Management Studio 有个模板资源管理器,不知你用过没有?使用模板创建脚本、自定义模板等功能能大大提高你的工作效率,如果没有尝试过,赶紧去试试吧。很多时候,我们习惯了手写脚本,而不愿意花费精力去研究陌生的工具。
你可以在通过下面方式打开模板资源管理器 视图->模板资源管理器; 也可以通过快捷键CTRL + ALT + T打开它。如图所示,你可以看见里面已经包含了许多模板了。
你可以点击任何一个模板,查看它的属性,就可以知道这些模板存储在那个地方了,我本地数据的模板存储在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
--
====================================================================================================
--
Function
: ...........................
--
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