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;  
    
  • 相关阅读:
    RDD容错处理方式和传统容错处理方式的比较(视频笔记)
    安装spark笔记
    动手实战创建RDD的三种方式(视频笔记)
    spark实时运算
    spark RDD 中Action的count、top、reduce、fold、aggregate (视频笔记)
    RDD中transformation的combineByKey、reduceByKey详解(视频笔记)
    spark RDD 中 transformation的map、flatMap、mapPartitions、glom详解(视频笔记)
    spark RDD中transformation的lazy特性深度解析和手动证明(视频笔记)
    SQL模糊查询语句拼接时单引号'问题
    我の第一篇博客
  • 原文地址:https://www.cnblogs.com/qichunlin/p/9088017.html
Copyright © 2011-2022 走看看