可用 ALTER PROCEDURE 语句进行修改。存储过程定义
包含两个主要组成部分:过程名称及其参数的说明,以及过程的主体(其中包含执行过程操作的 Transact-SQL 语句)。
----------------------------------------------------------------------------------------------------------------------
SQL之存储过程
存储过程是预编译 SQL 语句的集合,这些语句存储在一个名称下并作为一个单元来处理。存储过程代替了传统的执行 SQL 语句的方式。
一个存储过程中可包含查询、插入、删除、更新等操作的一系列 SQL 语句,当这个存储过程被调用执行时,这些操作也会同时执行。
使用 create procedure 语句创建存储过程
语法如下:
create { proc | procedure } [ schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ varying ] [ = default ] [ [ out [ put ] ]
[ ,…n ] [ with < procedure_option > [ ,…n ]
[ for replication ]
as { < sql_statement > [ ; ] [ …n ] | < method_specifier> }
[ ; ]
< procedure_option > :: =
[ encryption ]
[ recompile ]
[ execute_as_clause ]
<
sql_statement > :: =
{ [ begin ] statements [ end ] }
< method_specifier > :: =
external name assembly_name.class_name.method_name
参数说明:
schema_name:存储过程所属架构的名称。
procedure_name:新存储过程的名称。该名称必须遵循有关标识符的规则,并且在架构中必须唯一。
; number:胜于对同名过程进行分组的可选整数。使用一个 drop procedure 语句可将这些分组过程一起删除。
例如,称为 orders 的应用程序可能使用名为 orderproc;
1、orde
rproc;2、则数字不应包含在标识符中;只应在 procedure_name 前后使用适当的分隔符。
@parameter :存储过程中的参数。在 create procedure 语句中可以声明一个或多个参数。除非定义了参数的默认值或者将参数
设置为等于另一个参数,否则用户必须在调用过程时为每个声明的参数提供值。存储过程最多可以有 2100 个参数。
varying:指
定作为输出参数支持的结果集。该参数由存储过程动态构造,其内容可能发生改变。仅适应于 cursor 参数。
default:参数的默认值。如果定义了 default 值,则无需指定引参数的值即可执行过程。默认值必须是常量或 null.如果
过程使用带 like 关键字的参数,则可包含下列通配符%、_、[] 和 [^]。
out | put:指示参数是输出参数。此选项的值可以返回给调用 execute 的语句。使用 output 参数将值返回给过程的调用方。
除非是 clr 存储过程,否则 text 、ntext 和 image 不能用途 output 参数。使用 output 关键字的输出参数可以为游标
占位符, clr 存储过程除外。
encryption:指示 SQL Server 将 create procedure 语句的原始文本转换为模糊格式。模糊代码的输出在 SQL Server 2005 的
任何目录视图中都不能直接显示。对
系统表或数据库文件没有访问权限的用户不能检索模糊文本。但是,可通过 DAC 端口访问
系统表的特权用户或直接访问数据库文件 的特权用户可使用此文本。此外,向服务器进程附加调试器的用户可以运行时从内存
中检索已解密的过程。
execute as:指定在其中执行存储过程的安全上下文。
for replication:指定不能在订阅服务器上执行为复制创建的存储过程。使用 for replication 选项创建的存储过程可用作
存储过程筛选器,能在复制过程中执行。如果指定了 for replication ,则无法声明参数。对于 clr 存储过程,不能指定
for replication 。对于使用 for replication 创建的过程,忽略 recomplie 选项。
sql_statement:要包含在过程中的一个或多个 SQL 语句。
external name,assembly_name.class_name.method_name:指定 .net framework 程序集的方法,以便 clr 存储过程引用。
class_name 必须为有效的 SQl S