【Oracle11g】19_存储过程

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)

执行结果:

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;
/
posted @ 2020-04-26 22:39  OLIVER_QIN  阅读(455)  评论(0编辑  收藏  举报