Oracle存储过程回顾

-- 把注释说明啥的都写在代码中了,方便查看和执行
-- 是对Oracle存储过程的一个回顾和总结

--当建立了过程之后,Oracle会将过程名、源代码及其执行代码存放到数据字典中。当调用过程
--时,应用程序会按照其执行代码直接执行,而不需要重新解析过程代码,所以使用子程序的性
--能要优于直接执行SQL语句。通过查询数据字典USER_SOURCE,可以显示当前用户的所有子程序
--及其源码。
select * from all_source t where t.type = upper('procedure') and t.OWNER = upper('scott');
select * from user_source t where t.TYPE = upper('procedure');

-- 查看某一个具体的存储过程
select text from user_source t where t.TYPE = upper('procedure') and t.name = upper('PRO_SIMPLEINSERT');


-- 建立带输出参数的存储过程
-- 注意:varchar2后面是不带容量大小的,只是指明类型
create or replace procedure query_employee_pro(eno    number,
                                               name   out varchar2,
                                               salary out number) is
begin
  select ename, sal into name, salary from emp where empno = eno;
exception
  when no_data_found then
    raise_application_error(-20000, '雇员不存在');
end;
-- 查询7369的员工信息,好于存储过程中查询出来的结果相匹配
select * from emp t where t.empno = '7369';

-- 调用带输出参数的存储过程(在pl/sql工具中)
-- 首先声明变量,包括输入参数和输出参数,注意变量的赋值方式
declare
  var_no     number := 7369;
  var_name   varchar2(10);
  var_salary number;
begin
  -- 调用存储过程,注意:在存储过程名字前加“call”会报错
  query_employee_pro(var_no, var_name, var_salary);
  dbms_output.put_line(var_no || '号员工名字是:' || var_name);
  dbms_output.put_line(var_no || '号员工薪资是:' || var_salary);
end;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值