zoukankan      html  css  js  c++  java
  • 2018.5.27 OraclePLSQL编程 if-else练习和循环结构练习

    if-else运用

    declare 
      v_num number(8); 
    begin
    v_num :=&n;
      if v_num>0 and v_num<100 then
         dbms_output.put_line('工薪阶级'); 
      elsif v_num between 100 and 200 then
      dbms_output.put_line('中产阶级'); 
      else 
      dbms_output.put_line('资本家');
      end if;  
    end;
    

    case运用

    declare
      v_num number(8) :=&n;
      v_result varchar2(15);
    begin
      case
         when v_num =1 then v_result :='剪刀'; 
         when v_num =2 then v_result :='石头';
         when v_num =3 then v_result :='布';
         else
              v_result :='输入的数字无效';
         end case;
         dbms_output.put_line(v_result);
    end;
    

    --案例:1-10输出(loop循环实现)

    declare
      i number(8) :=1;
    begin
      loop
        dbms_output.put_line(i);
        exit when i =10;
        --改变初始值
        i := i+1;
        end loop;
    end;
    /
    

    --while循环实现上面例子

    declare
      i number(8) :=1;
    begin
      while i<=10 loop
        dbms_output.put_line(i);
        --改变初始值
        i := i+1;
        end loop;
    end;
    /
    

    --for循环输出1-10

    结构特点

    for i in() loop
    end loop;
    
    declare
        --i number(8) :=&n;
    begin
      for i in 1..10 loop  --初始值..结束值
      dbms_output.put_line();      
    end loop;
    end;
    /
    

    for循环反向输出 10-1

    declare
        --i number(8) :=&n;
    begin
      for i in resever  1..10 loop  --初始值..结束值
      dbms_output.put_line(i);      
    end loop;
    end;
    /
    
    declare 
    v_a number(8);
    begin
    v_a :=1;
    if v_a= 1 then 
    dbms_output.put
    
    declare
     num number(8)  :=&n;
     result number(8);
     --f(n) number(8);
    begin 
        case 
        when num=1 then result :=1;
        when num=2 then result =result
    
    

    作业if-else 结构

    1、输入员工的编号,判断此员工的工资:
    -如果工资sal<1000则让工资在原来在基础上加上100
    -如果工资1000<= sal <2000则让工资在原来在基础上加上200
    -否则让员工工资在原来的基础上加上300;

    declare
       v_empno number(30) :=&n;
       v_sal number(30);
    begin
       select sal into v_sal from emp where empno=v_empno; 
       if v_sal<1000 then v_sal :=v_sal +100;
       elsif v_sal between 1000 and 2000 then v_sal:=v_sal+200;
       else 
           v_sal :=v_sal+300;  
       end if;  
       dbms_output.put_line(v_sal);
    end;
    /
    

    2.编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。(使用if)

    declare
     v_ename varchar2(30) :=&n;
     v_sal number(30); 
    begin 
     select sal into v_sal from emp where ename=v_ename;
      if v_sal<2000 then v_sal :=v_sal+(v_sal*0.1);
      end if;
      dbms_output.put_line(v_sal);
    end;
    /
    

    3.编写一个过程,可以输入一个雇员名,如果该雇员的补助不是0 就在原来的基础上增加100;如果补助为0 就把补助设为200;(使用if...else)

    declare 
        v_ename varchar2(20) :=&n;
        --v_money number(30);
        v_nvl number(20);                         
    begin 
        select nvl(comm,0) into v_nvl from emp where ename=v_ename;
        if(v_nvl =0) then v_nvl :=v_nvl+200; 
        else v_nvl := v_nvl+100;
        end if;
        dbms_output.put_line(v_nvl);
    end;
    /
    

    --4、编写一个过程,可以输入一个雇员编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,
    --如果该雇员的职位是MANAGER 就给他的工资增加500,其它职位的雇员工资增加200。(使用if..elsif..else)

    declare
       v_empno number(32) :=&n;  
       v_job varchar2(20); 
       v_sal number(20);             
    begin
      select job,sal into v_job,v_sal from emp where empno=v_empno;
      if(v_job ='PRESIDENT') then v_sal :=v_sal+1000;
      elsif (v_job = 'MANAGER') then v_sal :=v_sal+500;
      else v_sal :=v_sal+200;
      end if;
      dbms_output.put_line(v_sal);
    end;
    /
    

    作业循环结构

    1、循环输出“haha1...haha10”(使用while)

    declare
       i number(5) :=1;
    begin
      while i<10 loop
      dbms_output.put_line('haha' || i);
      i :=i+1;
      end loop; 
    end;
    /  
    

    2、把上述示例改为loop实现

    declare
       i number(5) :=1;
    begin
      loop
      dbms_output.put_line('haha' || i);
      exit when i =10;
      i :=i+1;
      end loop; 
    end;
    /  
    

    3、现有一张表users,字段(uid,uname),分别使用(loop、while、for完成)。
    请编写一个过程,可以输入用户名,并循环添加10 个用户到users 表中,用户编号从1 开始增加。

    create table users  
    (  
        userid number(8),  
        uname varchar2(20)  
    );  
    
    
      
    declare  
         v_id number(8):=1;  
         v_name varchar2(20);  
    begin  
         while v_id<=3 loop  
           v_name:='&name';  
           insert into users values(v_id,v_name);  
           v_id:=v_id+1;  
         end loop;  
    end;  
    /    
    

    4、打印九九乘法表

    这个还要修改

    declare
    v_result number(20);
       --i number(20) :=1; 
    begin
       for i in 1..9  loop;
         for j in 1..9 loop;
         v_result :=i*j;
         if length(i*j)=1 and j!=1 then  
             dbms_output.put_line(' ');  
         end if;  
           dbms_output.put_line(i || '*'||j ||'='||v_result);
            dbms_output.put_line(' ');  
      end loop;
    end;
    

    这是对的

    declare  
    begin  
       for i in 1..9 loop  
         for j in 1..i loop  
            dbms_output.put(i);   
              dbms_output.put('*');   
                dbms_output.put(j);   
                 dbms_output.put('=');   
                  if length(i*j)=1 and j!=1 then  
                     dbms_output.put(' ');  
                     end if;  
                  dbms_output.put(i*j);   
                  dbms_output.put(' ');    
         end loop;  
       dbms_output.put_line(' ');  
       end loop;  
    end;  
    
  • 相关阅读:
    CodeForces 681D Gifts by the List (树上DFS)
    UVa 12342 Tax Calculator (水题,纳税)
    CodeForces 681C Heap Operations (模拟题,优先队列)
    CodeForces 682C Alyona and the Tree (树上DFS)
    CodeForces 682B Alyona and Mex (题意水题)
    CodeForces 682A Alyona and Numbers (水题,数学)
    Virtualizing memory type
    页面跳转
    PHP Misc. 函数
    PHP 5 Math 函数
  • 原文地址:https://www.cnblogs.com/qichunlin/p/9088017.html
Copyright © 2011-2022 走看看