zoukankan      html  css  js  c++  java
  • oracle高级编程2

    --存储过程
    
    --函数
    
    --完成普通的SQL编程。
    
    PLSQL 完整语法结构:
    declare 
      --定义变量、常量等(数据类型和长度)
    begin
      --plsql的内容
    exception 异常类型
      --异常处理
    end;
    
    --数据类型。
    */
    
    -------计算员工的缴税---------
    declare
      t_name scott.emp.ename%type;
      t_sal number(10,2);
      t_tax_rate constant number(3,2) := 0.2;
    begin
      select ename,sal+nvl(comm,0) into t_name,t_sal from scott.emp where empno=&请输入编号;
      dbms_output.put_line('姓名:'||t_name);
      dbms_output.put_line('薪水:'||t_sal);
      dbms_output.put_line('缴税:'||(t_sal*t_tax_rate));
      dbms_output.put_line('实发:'||(t_sal-(t_sal*t_tax_rate)));
    exception
       when no_data_found then
       dbms_output.put_line('您输入的编号有误!');
    end;
    
    
    --控制结构
    if 条件 then
    elsif 条件2 then
    else
    end if;
    
    declare
        tint number(2) := 9;
    begin
        if tint>10 then
           dbms_output.put_line('大于10');
        elsif tint=10 then
           dbms_output.put_line('等于10');
        else
          dbms_output.put_line('小于10');
        end if;
    end;
    
    --case语句
    --精确匹配
    declare
        tint number(2) := 9;
    begin
        case tint
             when 9 then 
               dbms_output.put_line('==9');
             when 8 then
               dbms_output.put_line('==8');
             else
               dbms_output.put_line('others');
        end case;
    end;
    
    --范围匹配
    declare
        tint number(2) := -5;
    begin
        case 
             when tint=9 or tint>9 then 
               dbms_output.put_line('>=9');
             when tint<9 and tint>0 then
               dbms_output.put_line('0-8');
             else
               dbms_output.put_line('others');
        end case;
    end;
    
    --循环结构
    --1. loop 。。。。   end loop;循环。
    declare
         i int := 1;
    begin
         loop
           dbms_output.put_line('i='||i);
           i := i + 1; 
           exit when i>10;
         end loop;
    end;
    
    --2. while 循环(loop增强——次数未知)
    declare
         i int := 1;
    begin
         while i<10 loop
           dbms_output.put_line('while >>>> i='||i);
           i := i + 1;       
         end loop;
    end;
    
    --3. for 循环(loop简化版——次数固定)
    create or replace procedure proc_show99
    as
    begin
         for i in 1..9 loop
             for j in 1..i loop
               dbms_output.put(j||'*'||i||'='||j*i||'  ');
             end loop;
             dbms_output.put_line('');
         end loop;
    end;
    
    --自定义异常(如果出现不满足要求的数据,使用抛出异常的方式,终止程序的执行)
    declare
         d_name scott.dept.dname%type;
    begin
         select dname into d_name from scott.dept;
         dbms_output.put_line(d_name);
    exception  
      when others then    
       dbms_output.put_line('系统故障,!!!');
    end;
    
    
    --修改员工的工资,如果工资降低,抛出异常。
    declare
       t_sal number(10,2);
       e_no number(10) :=&请输入编号;
       n_sal number(10) :=&请输入薪水;
       exceptionInfo exception;
    begin
       select sal into t_sal from scott.emp where empno=e_no;
       if n_sal<t_sal then
         --dbms_output.put_line('员工工资不能降!!!');
         raise exceptionInfo;
       end if;
       dbms_output.put_line('我能执行吗?');
       
    exception 
      when exceptionInfo then
      dbms_output.put_line('员工工资不能降!!!');
    end;
    
    --游标
    --1. 显示游标 (open。。。 close)
    --2. for循环游标(隐士游标)
    
    --显示游标
    declare 
         cursor cur_deptinfo is select * from scott.dept;
         deptLine scott.dept%rowtype;
    begin
       open cur_deptinfo;--打开
       
       -- 提取数据
       loop
         fetch cur_deptinfo into deptLine;
         exit when cur_deptinfo%notfound;
         dbms_output.put_line(deptLine.deptno||':'||deptLine.dname);             
       end loop;
       close cur_deptinfo;--关闭
    end;
    
    --for循环游标
    declare 
         cursor cur_deptinfo is select * from scott.dept;
    begin   
         for deptLine in cur_deptinfo loop
             --
             dbms_output.put_line(deptLine.deptno||':'||deptLine.dname);  
         end loop;     
    end;
  • 相关阅读:
    vue 实现背景图片动态绑定
    开发过程中常用英文单词备忘
    IDEA常用快捷备忘
    Spring-Boot学习纪要-8:Spring-Boot自定义starters
    Spring-Boot学习纪要-7:Spring-Boot启动配置原理
    Spring-Boot学习纪要-0:Spring-Boo与数据访问
    Spring-Boot学习纪要-5:Spring-Boot与Docker
    Spring-Boot学习纪要-4:Spring-Boot与Web开发
    Spring-Boot学习纪要-3:Spring-Boot与日志
    Spring-Boot学习纪要-1:Spring-Boot入门
  • 原文地址:https://www.cnblogs.com/huzi007/p/2869477.html
Copyright © 2011-2022 走看看