在MS SQL Server 2000中,创建一个存储过程有两种方法:一种是使用Transaction-SQL命令create Procedure,另一种是使用图形化管理工具Enterprise Manager。用Transaction- SQL创建存储过程是一种较为快速的方法,但对于初学者,使用Enterprise Manager 更易理解,更为简单。
当创建存储过程时,需要确定存储过程的三个组成部分;
所有的输入参数以及传给调用者的输出参数。 被执行的针对数据库的操作语句,包括调用其它存储过程的语句; 返回给调用者的状态值,以指明调用是成功还是失败。 12.2.1使用Enterprise Manager 创建存储过程
按照下述步骤用Enterprise Manager创建一个存储过程:
启动Enterprise Manager, 登录到要使用的服务器。 选择要创建存储过程的数据库,在左窗格中单击Stored Procedure 文件夹,此时在右窗格中显示该数据库的所有存储过程,如图12-1 所示。
右击Stored Procedure文件夹,在弹出菜单中选择New Stored Procedure, 此时打开创建存储过程对话框,如图12-2 所示。
输入存储过程正文。 单击Check Syntax, 检查语法是否正确。 单击OK, 保存。 在右窗格中,右击该存储过程,在弹出菜单中选择All task, 选择ManagePermissions, 设置权限,如图12-3 所示。
12.2.2 用create PROCEDURE命令创建存储过程
通过运用create Procedure命令能够创建存储过程,在创建存储过程之前,应该考虑到以下几个方面:
在一个批处理中,create Procedure语句不能与其它SQL语句合并在一起; 数据库所有者具有默认的创建存储过程的权限,它可把该权限传递给其它的用户; 存储过程作为数据库对象其命名必须符合命名规则; 只能在当前数据库中创建属于当前数据库的存储过程。 用create Procedure创建存储过程的语法规则如下:
create PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,…n ]
[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
[ FOR REPLICATION ]
AS sql_statement [ …n ]
各参数的含义如下:
procedure_name是要创建的存储过程的名字,它后面跟一个可选项number, 它是一个整数,用来区别一组同名的存储过程。存储过程的命名必须符合命名规则,在一个数据库中或对其所有者而言,存储过程的名字必须惟一。
@parameter是存储过程的参数。在create Procedure语句中,可以声明一个或多个参数。当调用该存储过程时,用户必须给出所有的参数值,除非定义了参数的缺省值。若参数的形式以@parameter=value出现,则参数的次序可以不同,否则用户给出的参数值必须与参数列表中参数的顺序保持一致。若某一参数以@parameter=value形式给出,那么其它参数也必须以该形式给出。一个存储过程至多有1024个参数。 Data_type
是参数的数据类型。在存储过程中,所有的数据类型包括text和image都可被用作参数。但是,游标cursor数据类型只能被用作OUTPUT参数。当定义游标数据类型时,也必须对VARING和OUTPUT关键字进行定义。对可能是游标型数据类型的OUTPUT参数而言,参数的最大数目没有限制。
VARYING指定由OUTPUT参数支持的结果集,仅应用于游标型参数。
Default是指参数的缺省值。如果定义了缺省值,那么即使不给出参数值,则该存储过程仍能被调用。缺省值必须是常数,或者是空值。
OUTPUT表明该参数是一个返回参数。用OUTPUT参数可以向调用者返回信息。Text类型参数不能用作OUTPUT 参数。
RECOMPILE指明SQL Server并不保存该存储过程的执行计划,该存储过程每执行一次都又要重新编译。
ENCRYPTION表明SQL Server加密了syscomments表,该表的text字段是包含有create procedure语句的存储过程文本,使用该关键字无法通过查看syscomments 表来查看存储过程内容。 FOR REPLICATION
选项指明了为复制创建的存储过程不能在订购服务器上执行,只有在创建过滤存储过程时(仅当进行数据复制时过滤存储过程才被执行),才使用该选项。FOR REPLICATION与WITH RECOMPILE选项是互不兼容的。
AS指明该存储过程将要执行的动作。
Sql_statement是任何数量和类型的包含在存储过程中的SQL语句。
另外应该指出,一个存储过程的最大尺寸为128M, 用户定义的存储过程必须创建在当前数据库中。
下面将给出几个例子,用来详细介绍如何创建包含有各种保留字的存储过程。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
有效的MySQL备份与恢复
如果您接手了一个MySQL生产系统,但不确定它是否运行了MySQL备份策略,这时需要做哪些保障措施呢?
-
Oracle用户:Exadata很强大但并非完美
Oracle Exadata自从两年前V2推出以来,都沉浸在一片溢美之词之中。然而,在由Enkitec举行的两天Exadata大会中,第一天就有人挑起了它的毛病。
-
Navis部署Oracle Pillar Axiom存储系统
Navis利用Oracle Pillar Axiom 600存储系统取代了NetApp存储解决方案,以支持用于其SPARCS N4终端运营系统的集成和开发环境。
-
甲骨文推出StorageTek SL150模块化磁带库
甲骨文近日宣布推出Oracle StorageTek SL150 模块化磁带库 (StorageTek SL150 Modular Tape Library),这是市面上扩展性极强且成本最低的磁带库。