zoukankan      html  css  js  c++  java
  • Oracle pl/sql编程值控制结构

    以下测试案例均来自于scott方案,运行前请确保该方案解锁。

    1、条件分支状语

    pl/sql中提供了三种条件分支状语,分别是:

    if   then

    if   then   else

    if   then   else   if   then

    1.1、if    then

    编写一个过程.可以输出一个雇员名,如果该雇员的工资低于2000,就给该雇员的工资增加10%,

    执行代码前,SMITH的SAL为800.代码如下:

    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*1.1 where ename=spName;
        end if;
        end;
        
        select * from emp;
    call sp_pro6('SMITH');

    执行sp_pro6过程.

    ok,Smith的工资增加了80,说明成功执行

    1.2、if   then   else

    编写一个过程,可以输入一个雇员名,如果该雇员的补助不是0,就在原来的基础上加100,如果补助为0就把补助设为200

    执行前,SMITH的补助为0,代码如下:

    create or replace procedure sp_pro7(spName varchar2) is
    v_comm emp.sal%type;
    begin
      select comm into v_comm from emp where ename=spName;
      if v_comm<>0 then
        update emp set comm=v_comm+100 where ename=spName;
        else 
          update emp set comm=200 where ename=spName;
        end if;
        end;

    执行过程

     call sp_pro7('SMITH');

    ok,因为SMITH的补助为0所以直接变为200,说明代码执行成功

    1.3、多重条件分支if   then   else if   else

    编写一个过程,输入一个雇员的编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,如果该雇员的职位是MANAGER,就给他的工资增加500,其他雇员的工资增加200.

    SMITH是CLERK,那么按照逻辑其SAL会增加200

    create or replace procedure sp_pro8(spName varchar2) is
    v_job emp.job%type;
    begin
      select job into v_job from emp where ename=spName;
      if v_job='PRESIDENT' then
        update emp set sal=sal+1000 where ename=spName;
      elsif v_job='MANAGER'  then
          update emp set sal=sal+500 where ename=spName;
          else
            update emp set sal=sal+200 where ename=spName;
        end if;
        end;

     执行过程

    call sp_pro8('SMITH');

    增加了200,ok,说明程序执行成功!!!

    2、循环语句  -loop

    是pl/sql中最简单的循环语句,这种循环语句以loop开头,以end loop结尾,这种循环至少会被执行一次。

    2.1、编写一个过程,输入用户名,并循环添加10个用户到users表中,用户编号从1开始增加,代码如下:

    create table users(id number(2),name varchar2(10));
    create or replace procedure sp_pro5(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;

    ok,代码编写完成,开始执行,代码如下:

    call sp_pro5('xiaochao');

    ok,完成需求

    2.2、while循环

    基本循环至少执行一次,而对while循环来说,只有条件为true时,才会执行循环体语句,while循环以while.....loop开始,以end loop结束;

    需求:编写一个过程,输入用户名,并循环添加10个用户到users表中,用户编号从11开始,代码如下:

    create or replace procedure sp_pro4(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;

    ok,程序执行成功!

  • 相关阅读:
    toj 2975 Encription
    poj 1797 Heavy Transportation
    toj 2971 Rotating Numbers
    zoj 2281 Way to Freedom
    toj 2483 Nasty Hacks
    toj 2972 MOVING DHAKA
    toj 2696 Collecting Beepers
    toj 2970 Hackle Number
    toj 2485 Card Tric
    js页面定位,相关几个属性
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/6669722.html
Copyright © 2011-2022 走看看