PLSQL的控制结构

在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...)在pl/sql中也存在这样的控制结构。同样,PLSQL中也存在这些控制语句。
1.  条件分支语句
     pl/sql中提供了三种条件分支语句if—then,if – then – else,if – then – elsif – then
(1). 简单的条件判断 if – then
      问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。 
create or replace procedure sp_pro6(spName varchar2) is --定义 v_sal emp.sal%type; begin --执行 select sal into v_sal from emp where ename=spName; --判断 if v_sal<2000 then update emp set sal=sal+sal*10% where ename=spName; end if; end;

(2). 二重条件分支 if – then – else
      问题:编写一个过程,可以输入一个雇员名,如果该雇员的补助不是0就在原来的基础上增加100;如果补助为0就把补助设为200; 
create or replace procedure sp_pro6(spName varchar2) is --定义 v_comm emp.comm%type; begin --执行 select comm into v_comm from emp where ename=spName; --判断 if v_comm<>0 then update emp set comm=comm+100 where ename=spName; else update emp set comm=comm+200 where ename=spName; end if; end;
(3). 多重条件分支 if – then – elsif – then
      问题:编写一个过程,可以输入一个雇员编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,如果该雇员的职位是MANAGER就给他的工资增加500,其它职位的雇员工资增加200。
create or replace procedure sp_pro6(spNo number) is --定义 v_job emp.job%type; begin --执行 select job into v_job from emp where empno=spNo; if v_job='PRESIDENT' then update emp set sal=sal+1000 where empno=spNo; elsif v_job='MANAGER' then update emp set sal=sal+500 where empno=spNo; else update emp set sal=sal+200 where empno=spNo; end if; end;

2. 循环语句
(1). 循环语句 –loop语句
      是pl/sql中最简单的循环语句,这种循环语句以loop开头,以end loop结尾,这种循环至少会被执行一次。
案例:现有一张表users,有id和name两个字段。
请编写一个过程,可以输入用户名,并循环添加10个用户到users表中,用户编号从1开始增加。

create or replace procedure sp_pro6(spName varchar2) is --定义 :=表示赋值 v_num number:=1; begin loop insert into users values(v_num,spName); --判断是否要退出循环 exit when v_num=10; --自增 v_num:=v_num+1; end loop; end;  

(2). 循环语句 –while循环
      基本循环至少要执行循环体一次,而对于while循环来说,只有条件为true时,才会执行循环体语句,while循环以while...loop开始,以end loop结束。 
问题:请编写一个过程,可以输入用户名,并循环添加10个用户到users表中,用户编号从11开始增加。
create or replace procedure sp_pro6(spName varchar2) is --定义 :=表示赋值 v_num number:=11; begin while v_num<=20 loop --执行 insert into users values(v_num,spName); v_num:=v_num+1; end loop; end;

(3). 循环语句 –for循环
      基本for循环的基本结构如下
begin for i in reverse 1..10 loop insert into users values (i, 'shunping'); end loop; end;
     我们可以看到控制变量i,在隐含中就在不停地增加。
3.  顺序控制语句 –goto,null
(1). goto语句
      goto语句用于跳转到特定符号去执行语句。注意由于使用goto语句会增加程序的复杂性,并使得应用程序可读性变差,所以在做一般应用开发时,建议大家不要使用goto语句。
基本语法如下 goto lable,其中lable是已经定义好的标号名
declare i int := 1; begin loop dbms_output.put_line('输出i=' || i); if i = 1{} then goto end_loop; end if; i := i + 1; end loop; <<end_loop>> dbms_output.put_line('循环结束'); end;

(2). null 
      null语句不会执行任何操作,并且会直接将控制传递到下一条语句。使用null语句的主要好处是可以提高pl/sql的可读性。
declare v_sal emp.sal%type; v_ename emp.ename%type; begin select ename, sal into v_ename, v_sal from emp where empno = &no; if v_sal < 3000 then update emp set comm = sal * 0.1 where ename = v_ename; else null; end if; end;

你可能感兴趣的:(java,manager,null,insert,语言,pascal)