【Oracle】子程序与过程

子程序

  • 定义
已经命名的PL/SQL块,预编译在内存中,提高代码的运行效率,封装可以重复调用,方便维护
  • 分类
过程
    Procedural  执行PL/SQL块的
函数
    function 执行PL/SQL块的返回值 return
  • 组成
 创建部分
     create procedural/function 命名;
 执行部分
     begin ... end;
 异常部分(可选)
     exception when 异常类型 then 异常处理;
  • 优点
 提高代码的运行效率,可以重复调用,方便维护

过程(Procedure)

  • 简单的过程
规则
    (参数类型不能定义长度) 可以是 varchar2;

语法
    create [or replace] Procedure 过程的名字 (变量名1 变量类型1,变量名2 变量类型2,...);
    as||is
    变量名称1  变量类型1;
    变量名称2  变量类型2;
    ...
    begin
        //代码执行部分
        exception when 异常类型 then 异常处理
    end

调用(在PL/SQL块中去调用)
    [declare
        变量名称  变量类型1;
        ...
    ]
    begin
        过程名字(值1,值2);
    end
  • 简单的过程
语法
    create or replace Procedure 过程名字(myproc)
    as
    begin
        //代码的执行部分
        例:dbms_output.put_line('Hello Jack');
    end
调用
    begin
        过程名字(myproc);
    end
  • 带参数的过程:提高灵活性
语法
    create or replace Procedure 过程名(my_proc) (names varchar2)
    as
    begin
        //执行的代码
        例:dbms_output.put_line(name||'Hello');
    end
调用
    begin
        names:='&names';
        my_proc(names);
    end
  • 带异常的过程
示例:根据员工编号查询员工姓名,并打印(如果没找到记录则为用户输出友好提示)

语法
    create or replace Procedure my_proc(empno_n in number)
    as
    ename_s varchar(20)
    begin
        select emp.ename into ename_s from emp where emp.empno = empno_n;
        dbms_output.put_line('员工姓名:'||ename_s);
    exception when no_data_found then
        dbms_output.put_line('不存在该员工');
    end

调用
    begin
        myproc(值);
    end
  • 过程的参数模式
in
    输入参数(默认)
out
    输出参数
in out
    输入,输出参数

语法
    create or replace Procedure 过程名(变量名1 in 类型,变量名2 out 类型)
    as
    begin
        //代码的执行部分
    end

调用
    declare
        变量名2 变量类型;
    begin
        过程名(值,变量名2)
    end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值