您的位置:首页 > 数据库 > Oracle

oracle 存储过程基础知识1

2009-09-08 09:41 288 查看
CREATE PROCEDURE51Testing软件测试网/*H||0THXQ6k

创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。也可以创建在 Microsoft SQL

Server启动时自动运行的存储过程。/4E;rX,T G0
51Testing软件测试网%BG |'b(G{

语法51Testing软件测试网!c
l"M;_6du_

CREATE PROC [ EDURE ] procedure_name [ ; number ]51Testing软件测试网*@Qm
UM8h
oBW

[ { @parameter data_type }

#fA'z+s1vr#P
f1}0
[ VARYING ] [ = default ] [ OUTPUT ]51Testing软件测试网�KcN+Wz
S)OB7l

] [ ,...n ]

VHk.o-ZD0

!F:P&DIr I0
[ WITH

Wm6_
N#rwDPx!x|0
{ RECOMPILE ENCRYPTION RECOMPILE , ENCRYPTION } ]51Testing软件测试网IM ]&}K

?Y(Lmp�id0
[ FOR REPLICATION ]

M(V-t0w3g&j#bF0

*beo"nr/i1mIA0
AS sql_statement [ ...n ]

T?O{;e0
51Testing软件测试网4s*xz5LCb&e&j}

Ne!N T f{0
参数51Testing软件测试网,a`.sg5|F

procedure_name51Testing软件测试网/M3P/@6aD
S?E^'|

51Testing软件测试网 o^A)zb'G

新存储过程的名称。过程名必须符合标识符规则,且对于数据库

及其所有者必须唯一。有关更多信息,请参见使用标识符。51Testing软件测试网_]zs2At~;H0b
Q

要创建局部临时过程,可以在 procedure_name 前面加一个编号符 (#procedure_name),要创建全局临时过程,可以在
procedure_name 前面加两个编号符 (##procedure_name)。完整的名称(包括 # 或 ##)不能超过 128
个字符。指定过程所有者的名称是可选的。

l@:wev
Gy0

*[y G1} et-k0
;number51Testing软件测试网1W8f&y T#J m$yzX

是可选的整数,用来对同名的过程分组,以便用一条 DROP PROCEDURE 语句即可将同组的过程一起除去。例如,名为 orders
的应用程序使用的过程可以命名为 orderproc;1、orderproc;2 等。DROP PROCEDURE orderproc
语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应在 procedure_name 前后使用适当的定界符。51Testing软件测试网4^%n!z,XpW
I(Z

:}+T6^#[/B?8an/N0
@parameter

9x|6D:bTf0

)u)c,M)nJ2/+UL&j0
过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100 个参数。

*}'}&z2dl9j0A~ @cO0

? /1g'Z%t0
使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它

过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。有关更多信息,请参见 EXECUTE。

k'Z`6dV'j"e0

laq"vwP2I0
data_type

Y5UM~L
K;d
S*Yj0

+PA#v:r/PAq0

数的数据类型。所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。不过,cursor 数据类型只能用于
OUTPUT 参数。如果指定的数据类型为 cursor,也必须同时指定 VARYING 和 OUTPUT 关键字。有关 SQL Server
提供的数据类型及其语法的更多信息,请参见数据类型。

2D;]4^w-Vz }/wT0
51Testing软件测试网M:N
_i/F8~o*`3r

_iX"u$zq0
说明 对于可以是 cursor 数据类型的输出参数,没有最大数目的限制。51Testing软件测试网 } V} e(I,]D

51Testing软件测试网 V!q
mI/Qt.f(p@

M,ukEki0
VARYING

lNE_#F O"[0
51Testing软件测试网2P8w$Z/k,/|(s:q

指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。51Testing软件测试网l*?"Lb+J4/bF"@t%M5R

j].I;K*qc'x3/*P0
default51Testing软件测试网C3}:T9Jb XI

#WM1QIOT0C,]0
参数的默认值。如果定义了默认值,不必指定该参数的值即可执行过程。默认值必须是常量或 NULL。如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(*、_、[] 和 [^])。51Testing软件测试网0x Z!Ijb/e~4J

$H b8~.M+KuH0
OUTPUT

y@*nQ$va s0
51Testing软件测试网0}HBJA%x N(I$Z;O

表明参数是返回参数。该选项的值可以返回给 EXEC[UTE]。使用 OUTPUT 参数可将信息返回给调用过程。Text、ntext 和 image 参数可用作 OUTPUT 参数。使用 OUTPUT 关键字的输出参数可以是游标占位符。51Testing软件测试网?:S:ipT

51Testing软件测试网5oQ"z s7gsl

n

mv(x&K}w k)N0
51Testing软件测试网6M
j(O{�bq,R1jkM

表示最多可以指定 2.100 个参数的占位符。51Testing软件测试网k3~5KCS8l$C

51Testing软件测试网'we
ze.BXRF,K

{RECOMPILE ENCRYPTION RECOMPILE, ENCRYPTION}

*F a Am(yQ0
51Testing软件测试网J+O'z
Xq l3M

RECOMPILE 表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译。在使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。51Testing软件测试网;?!y!CA7w{Oq@

G:Vr,_V1wv Y|0
ENCRYPTION 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 语句文本的条目。使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。

说明 在升级过程中,SQL

Server 利用存储在 syscomments 中的加密注释来重新创建加密过程。51Testing软件测试网/H&bB/I!py;kAmZ ]

51Testing软件测试网^.T6NvWL

Dk9oS�~W1A{$V.t0
51Testing软件测试网2u&e/(uO-d+D

FOR REPLICATION51Testing软件测试网d;P;G#u$x q

51Testing软件测试网apt!x0Mw ^2fZ"mwZ`

指定不能在订阅服务器上执行为复制创建的存储过程。.使用 FOR REPLICATION 选项创建的存储过程可用作存储过程筛选,且只能在复制过程中执行。本选项不能和 WITH RECOMPILE 选项一起使用。51Testing软件测试网qI3C.o7o.R1A0X

^"k4uZT4z/T0
AS

2PL7Av:`,?4V4P9G0
51Testing软件测试网A8pZ(J&A,^s(T

指定过程要执行的操作。51Testing软件测试网W!S C{ D5f^:~

e;W+f/_$G0U0
sql_statement

(E./Uw
kO;B/%bE0
51Testing软件测试网/c$d| L5d$U$|

过程中要包含的任意数目和类型的 Transact-SQL 语句。但有一些限制。

KtC%Y /tqP0

Nm"v8^
_0
n51Testing软件测试网P*}C6K0p

51Testing软件测试网 sX
]&]uh7`~

是表示此过程可以包含多条 Transact-SQL 语句的占位符。

&PAfq [0
51Testing软件测试网1|!u9F7?:fOi+F

转自 http://www.51testing.com/?66770
51Testing软件测试网 ]&y
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: