过程的语法:
CREATE [OR REPLACE] PROCEDURE 过程名 [(过程参数列表)]
{IS|AS}
BEGIN
[EXCEPTION]
END [过程名];
如图:
第一个,不带参数的过程:
create or replace procedure displaytest
is
begin
end displaytest;
在command window 中,进行测试:
SQL> set serverout on
SQL> execute displaytest
PL/SQL procedure successfully completed
以下是执行成功后的截图:
好的编程习惯可以在编写程序过程中达到事半功倍的效果,在写PL/SQL的过程中,应该先写框架,及搭架子,再填内容。
下面是带参数的过程测试:
create or replace procedure displaytest(agetest number)
is
begin
end displaytest;
在command window 中,进行测试:
SQL> set serverout on
SQL> execute displaytest(67)
PL/SQL procedure successfully completed
以下是测试成功后执行查询语句后的截图:
另外必须要说明的是:调用程序是通过参数向过程传值的,过程中的形参接收调用者传递过来的参数,并且在过程中可以使用。默认情况下,过程中的参数在过程中只能使用,不能对参数重新赋值。过程中参数传递共有三种模式:分别是IN、OUT和IN OUT。参数的具体语法是:
参数名称 [IN|OUT|IN OUT] 数据类型
其中,最常用的是IN,OUT。在什么都不写的时候,默认是IN。
并且在默认情况下(即IN):在PL/SQL中是不可以给参数赋值的。
如上例中,在IS段中是不能给agetest赋值的。
在参数中也可以给赋默认值,在参数定义同时用DEFAULT(或者赋值运算符)直接对参数进行初始化,即参数的默认值,当调用者没有对该参数传值时,过程中就使用参数默认值。一个过程中可以有若干个默认值参数,但是默认值参数只能放在参数列表的最后。
语法如下:
参数名称 [IN|OUT|IN OUT] 数据类型 DEFAULT
例如:
create or replace procedure displaytest(usename varchar,agetest number default 23)
is
begin
end displaytest;
这样写当调用时,只给名字赋值,则默认的年龄就是23岁。
SQL> execute displaytest('ssk')
PL/SQL procedure successfully completed
结果:
如果把参数写成这样:agetest number default 23,usename varchar
即:begin displaytest('ssk'); end;
ORA-06550: 第 2 行, 第 7 列:
PLS-00306: 调用 'DISPLAYTEST' 时参数个数或类型错误
ORA-06550: 第 2 行, 第 7 列:
PL/SQL: Statement ignored
这样正确:
SQL> execute displaytest(45,'ssk')
PL/SQL procedure successfully completed
截图如下:
以上是对oracle数据库中子程序和程序包中过程的一些学习心得,希望对同样学习数据库的人有所帮助!