存储过程
存储过程
海贼爱音乐 发表于4个月前
存储过程
  • 发表于 4个月前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 存储过程和自定义函数
  1. 存储过程
create or replace procedure hello(empid in number)
is
  pname varchar2(20);
  psal employees.salary%type;
begin
  select first_name,salary into pname,psal from employees where employee_id=empid;
  update employees set salary=salary+1000 where employee_id=empid;
  dbms_output.put_line('员工'||pname||'现在工资为'||(psal+1000));
end;

一般不在存储过程和函数中commit和rollback,而是在调用时commit。

begin
  hello(105);
  commit;
end;
  1. 调试 > sys as sysdba 超级管理员登录
    alter user hr identified by test account unlock 解锁hr账号并修改密码为test
    grant debug connect session,debug any procedure to hr; 授权hr用户调试
  2. 存储函数
create or replace function hello2(empid in number)
return number
is
  psal employees.salary%type;
  pcomm employees.commission_pct%type;
begin
  select salary,commission_pct into psal,pcomm from employees where employee_id=empid;
  return psal*12+nvl(pcomm,0);
end;

调用

declare
  v_test number;
begin
  v_test:=hello2(104);
  dbms_output.put_line(v_test);
end;
  1. 异常(no_data_found、too_many_rows、value_error)
declare
pename emp.ename%type;
begin
  select ename into pename from emp where empno=666;
exception
  when no_data_found then dbms_output.put_line('没有找到');
  when others then dbms_output.put_line('其他');
end;
标签: Oracle
共有 人打赏支持
粉丝 0
博文 71
码字总数 17509
×
海贼爱音乐
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: