PL/SQL 11g R2 —— 存储过程

--子程序:过程和函数
--带有out参数的存储过程
create or replace procedure query_emp( v_empno in emp.empno%type, v_ename out emp.ename%type, v_sal out emp.sal%type) 
is
begin 
  select emp.ename,emp.sal into v_ename,v_sal from emp where emp.empno=v_empno;
end;
/
--调用
var name varchar2;
var sal number;
exec query_emp(7788,:name,:sal);

--带有in out的存储过程
create or replace procedure counts( num1 in out number, num2 in out number) 
as 
  v1 number; 
  v2 number;
begin 
  v1:=num1/num2; 
  v2:=mod(num1,num2); --余数 
  num1:=v1; 
  num2:=v2;
end;
/
--调用
var n1 number;
var n2 number;
exec :n1:=100;
exec :n2:=30;
exec counts(:n1,:n2);

--为存储过程传递参数
create or replace procedure add_bonus( v_ename bonus.ename%type, v_job bonus.job%type default null, v_sal bonus.sal%type default null) 
as
begin 
  insert into bonus(ename,job,sal) values(v_ename,v_job,v_sal); 
  commit;
end;
/
--调用
--位置传递
exec add_bonus(10,'zhangsan',1000);
exec add_bonus(20,'lisi');
exec add_bonus(30);
--名称传递
exec add_bonus(v_job=>'老师',v_ename=>'张三',v_sal=>800);
exec add_bonus(v_ename=>'李四',v_sal=>1200);
--查看用户所有的子程序
select t.text from user_source t where t.name='COUNTS';
select * from user_source;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值