zoukankan      html  css  js  c++  java
  • Oracle笔记:pl/sql控制结构

    1.条件分支语句
      1)if……then 例:
        --编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,则给该雇员工资增加10%
        create or replace procedure update_sal(sname varchar2) is
        v_sal emp.sal%type;
        begin
          select sal into v_sal from emp where ename=sname;
          if v_sal<2000 then
            update emp set sal=sal*1.1 where ename=sname;
          end if;
        end; 

      2)if……then……else 例:
        --编写一个过程,可以输入一个雇员名,如果该雇员的补助不为0,就在原来的基础上增加100,如果补助为0就把补助设为200
        create or replace procedure update_comm(sname varchar2) is
        v_comm emp.comm%type;
        begin
          select comm into v_comm from emp where ename=sname;
          if v_comm<>0 then
            update emp set comm=comm+100 where ename=sname;
          else
            update emp set comm=200 where ename=sname;
          end if;
        end; 

      3)if……then……elsif……else 例:
        --编写一个过程,可以输入一个雇员编号,如果该雇员的职位是PRESIDENT,则将他的工资增加1000;
        --如果该雇员的职位是MANAGER,则将他的工资增加500;其他职位的工资增加200
        create or replace procedure update_sal(sno number) is
        v_job emp.job%type;
        begin
          select job into v_job from emp where empno=sno;
          if v_job='PRESIDENT'then
             update emp set sal=sal+1000 where empno=sno;
          elsif v_job='MANAGER' then
             update emp set sal=sal+500 where empno=sno;
          else
             update emp set sal=sal+200 where empno=sno;
          end if;
        end; 

    2.循环语句
     1) loop: pl/sql中最简单的循环,至少会被执行一次,例:
      --有一张users表,有用户ID和用户名两个字段。
      --编写一个过程,可输入用户名,并循环添加10个用户到users表中,用户编号从1开始增加。
      create or replace procedure add_users(sName varchar2) is
      v_no number:=1;
      begin
        loop
          insert into users values(v_no,sName);
           --判断是否要退出循环
          exit when v_no=10;
          v_no:=v_no+1;
        end loop;
      end;

     2)where 例:
     --编写一个过程,可输入用户名,并循环添加10个用户到users表中,用户编号从11开始增加。
     create or replace procedure add_users(sName varchar2) is
     v_no number:=11;
     begin
       while v_no<=20 loop
         insert into users values(v_no,sName);
         v_no:=v_no+1;
       end loop;
     end;

      3) for

    3. 顺序控制语句
      1) goto

      2) null:null语句不会执行任何操作,并且会直接将控制传递到下一条语句,使用null语句的主要好处是可以提高pl/sql的可读性。

  • 相关阅读:
    UVa 12174 (滑动窗口) Shuffle
    UVa 1607 (二分) Gates
    CodeForces ZeptoLab Code Rush 2015
    HDU 1525 (博弈) Euclid's Game
    HDU 2147 (博弈) kiki's game
    UVa 11093 Just Finish it up
    UVa 10954 (Huffman 优先队列) Add All
    CodeForces Round #298 Div.2
    UVa 12627 (递归 计数 找规律) Erratic Expansion
    UVa 714 (二分) Copying Books
  • 原文地址:https://www.cnblogs.com/testing/p/3003293.html
Copyright © 2011-2022 走看看