目录



1.语法

-- 创建存储过程的语法
CREATE [OR REPLACE] PROCEDURE
<procedure name> [(<parameter list>)]
IS|AS
<local variable declaration>
BEGIN
<executable statements>
[EXCEPTION
<exception handlers>]
END;


2.过程参数的三种模式

  • IN
  • 用于接受调用程序的值
  • 默认的参数模式
  • OUT
  • 用于向调用程序返回值
  • IN OUT
  • 用于接受调用程序的值,并向调用程序返回更新的值。

3.实战案例

3.1 in参数使用:按要求打印行

写一个存储过程,输出:

*

**

***

****

*****

******

*******

实现代码:

create or replace procedure proc1(i in number)
as
a varchar2(100);
begin
a := '';
for j in 1..i
loop
a := a || '*';
dbms_output.put_line(a);
end loop;
end;

-- 执行存储过程 SQL*Plus
exec proc1(7)


执行结果:

【Oracle11g】19_存储过程_存储过程

3.2 out参数使用:打印值

-- 创建过程
create or replace procedure proc2(j out int)
as
begin
j := 100;
dbms_output.put_line(j);
end;

-- 执行
declare
k number;
begin
proc2(k);
end;
/


3.3 in out参数使用

create or replace procedure   proc3(p1 in out number, p2 in out number)
is
v_temp number;
begin
v_temp := p1;
p1 := p2;
p2 := v_temp;
end;

-- 执行
declare
num1 number := 11;
num2 number := 22;
begin
proc3(num1 ,num2 );
dbms_output.put_line('num1:' || num1);
dbms_output.put_line('num2:' || num2);
end;
/


作者:奔跑的金鱼