创建存储过程前,应该考虑下列几个事项:
①不能将 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:用于返回当前数据库中的存储过程列表 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号