Oracle(22)pl/sql编程 控制结构语句

来源:互联网 发布:开淘宝的心得体会 编辑:程序博客网 时间:2024/05/22 06:47

①条件语句if..then/if_then_else

-------------- 单if——then ---------------create or replace procedure pro1(v_in_empno varchar2) isv_sal emp.sal%type;begin  select sal into v_sal from emp where empno = v_in_empno;  if v_sal<2000 then    update emp set sal=sal*1.1 where empno=v_in_empno;  end if;end;-------------- 多重ifthen-elsif—then ---------------create or replace procedure pro1(v_in_empno varchar2) isv_job emp.job%type;begin  select job into v_job from emp where empno = v_in_empno;  if v_job='PRESIDENT' then    update emp set sal=sal+1000 where empno=v_in_empno;  elsif v_job='MANAGER' then    update emp set sal=sal+500 where empno=v_in_empno;  else    update emp set sal=sal+200 where empno=v_in_empno;  end if;end;

②循环结构

----- 循环添加n条记录 到表users5----------------------loop基本循环create or replace procedure pro1(v_in_ename varchar2, n number) is--定义需要的变量v_empno users5.id%type:=1;begin  loop    exit when n<=0;    --执行添加任务    insert into users5 values(v_empno, v_in_ename);    exit when v_empno = n;    --v_empno自增    v_empno:=v_empno+1;  end loop;end;-----------while...loop循环create or replace procedure pro1(v_in_ename varchar2, n number) is--定义需要的变量v_empno users5.id%type:=1;begin  while v_empno <= n loop    --执行添加任务    insert into users5 values(v_empno, v_in_ename);    --v_empno自增    v_empno:=v_empno+1;  end loop;end;-----------for i in reverse begin_i..end_i loop循环create or replace procedure pro1(v_in_ename varchar2, n number) is--定义需要的变量v_empno users5.id%type:=1;begin  for v_empno in reverse 1..n loop    --执行添加任务    insert into users5 values(v_empno, v_in_ename);  end loop;end;

③顺序控制语句 goto null(null语句主要为了提高代码的可读性,什么都不做)

declarei number:=1;begin  <<start_loop>>   ---标号  loop    dbms_output.put_line('输出i=' || i);    if i=12 then      goto end_loop;    end if;    i:= i + 1;    if i=10 then      goto start_loop;    else      null;    end if;  end loop;  <<end_loop>>  dbms_output.put_line('循环结束');end;
0 0
原创粉丝点击