ITPub博客

首页 > Linux操作系统 > Linux操作系统 > PL/SQL循环控制语句

PL/SQL循环控制语句

原创 Linux操作系统 作者:红叶DBA 时间:2011-04-12 16:34:42 0 删除 编辑

--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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 同义词、序列
请登录后发表评论 登录
全部评论

注册时间:2010-08-19

  • 博文量
    54
  • 访问量
    69631