创建存储过程前,应该考虑下列几个事项:

 

①不能将 CREATE PROCEDURE 语句与其它 SQL 语句组合到单个批处理中。

②创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。

③存储过程是数据库对象,其名称必须遵守标识符规则。

④只能在当前数据库中创建存储过程。

⑤一个存储过程的最大尺寸为128M

 

使用CREATE PROCEDURE创建存储过程的语法形式如下:

 

CREATEPROC[EDURE]procedure_name[;number]

 [{@parameterdata_type}

 [VARYING][=default][OUTPUT]

][,...n]

 WITH

    {RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]

[FORREPLICATION]

AS sql_statement [ ...n ]

 

procedure_name:用于指定要创建的存储过程的名称。

number:该参数是可选的整数,它用来对同名的存储过程分组,以便用一条 DROP PROCEDURE 语句即可将

 

同组的过程一起除去。

@parameter:过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。

data_type:用于指定参数的数据类型。

VARYING:用于指定作为输出OUTPUT参数支持的结果集。

Default:用于指定参数的默认值。

OUTPUT:表明该参数是一个返回参数。

 

RECOMPILE:表明 SQL Server 不会保存该存储过程的执行计划

ENCRYPTION :表示 SQL Server 加密了 syscomments 表,该表的text字段是包含 CREATE PROCEDURE

 

句的存储过程文本。

FOR REPLICATION:用于指定不能在订阅服务器上执行为复制创建的存储过程。

AS:用于指定该存储过程要执行的操作。

sql_statement:是存储过程中要包含的任意数目和类型的 Transact-SQL 语句。

 

 

执行存储过程 :

 

直接执行存储过程可以使用EXECUTE命令来执行,其语法形式如下:

[[EXEC[UTE]]

    {

        [@return_status=]

           {procedure_name[;number]|@procedure_name_var}

    [[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]}

        [,...n]

[ WITH RECOMPILE ]

 

 

例子:

 

使用 EXECUTE 命令传递单个参数,它执行 showind 存储过程,以 titles 为参数值。showind 存储过程

 

需要参数 (@tabname),它是一个表的名称。其程序清单如下:

EXEC showind titles

当然,在执行过程中变量可以显式命名:

EXEC showind @tabname = titles

如果这是 isql 脚本或批处理中第一个语句,则 EXEC 语句可以省略:

showind titles或者showind @tabname = titles

 

 

使用系统存储过程来查看用户创建的存储过程 :

 

可供使用的系统存储过程及其语法形式如下:

sp_help:用于显示存储过程的参数及其数据类型

sp_help [[@objname=] name]

参数name为要查看的存储过程的名称。

sp_helptext:用于显示存储过程的源代码

sp_helptext [[@objname=] name]

参数name为要查看的存储过程的名称。

sp_depends:用于显示和存储过程相关的数据库对象

sp_depends [@objname=]’object’

参数object为要查看依赖关系的存储过程的名称。

sp_stored_procedures:用于返回当前数据库中的存储过程列表
posted on 2007-04-11 15:45  .NET初学者俱乐部  阅读(261)  评论(0)    收藏  举报


 
Asp.net 初学者零起点从入门到精通