PL/SQL循环控制语句


--PL/SQL循环控制语句 之  IF ... THEN ...

create or replace procedure RecoverRecord is
--定义游标类型myCursor;
type myCursor is ref cursor;
--定义游标类型的变量mycur1;
mycur1 myCursor;
--定义一般变量;
v_name emp.ename%type;
v_sal emp.sal%type;
--执行部分;
begin
--把游标mycur1与一个select结合;
open mycur1 for select ename,sal from emp where deptno=&no;
--循环取出数据;
loop
fetch mycur1 into v_name,v_sal;
--判断该员工的工资是否小于2500;小于2500的工资都加100;
if v_sal<2500 then
update emp set sal=sal+100 where ename=v_name;
dbms_output.put_line('员工姓名:'||v_name||'  工资:'||v_sal||'  由于该员工的工资低于2500,现在再加100,其工资为'||(v_sal+100));
else
dbms_output.put_line('员工姓名:'||v_name||'  工资:'||v_sal);
end if;
--判断游标mucur1是否为空;
exit when mycur1%notfound;
end loop;
--关闭游标;
close mycur1;
end;

-- 测试loop循环与while循环的区别;

create or replace procedure testLoop is
v_num number:=1;
begin
loop
v_num:=v_num+1;      --loop循环内的语句有执行顺序;
exit when v_num>0;   --若先写Exit语句,则先判断,否则先做Exit语句之前的语句,后判断;
end loop;
dbms_output.put_line(v_num);
end;

--测试调用有返回值的过程;

--参数中的 in 表示该参数是一个输入值参数;
--参数中的 out 表示该参数是一个输出值参数;
create or replace procedure getName(pnum in number,pname out varchar2,psal out number)
is
begin
select ename,sal into pname,psal from emp where empno=pnum;
end;

--返回结果集的过程;

--1.创建一个包,在该包中定义一个游标类型;
create or replace package mypackage as
type returncursor is ref cursor;
end mypackage;
--2.创建过程,要求返回有表类型;
create or replace procedure mycur(pnum number,pcursor out mypackage.returncursor)
is
begin
open pcursor for select * from emp where deptno=pnum;
end;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24465008/viewspace-692328/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24465008/viewspace-692328/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值