zoukankan      html  css  js  c++  java
  • Oracle SQL语句大全(四)

    PL/SQL里面执行DDL语句 
    begin 
    execute immediate 'create table T(nnn varchar2(20) default ''aaa'')'end; 
    PL/SQL的分支语句: declare 
       v_sal emp.sal%type; begin 
       select sal into v_sal from emp     where empno=7369
       if(v_sal<1200then       dbms_output.put_line('low');  
      elsif(v_sal<2000then       dbms_output.put_line('middle'); 
       else      dbms_output.put_line('high'); 
      end if;
     end
    pL/Sql循环  declare     i binary_integer:=1;
     begin     loop        dbms_output.put_line(i);    
       i:
    =i+1;        exit when(i>=11);  
      end loop;
     end
    PL
    /SQL for循环
     begin  for k in 1..10 loop      dbms_output.put_line(k);
     
    end loop;   for k in reverse 1..10 loop     dbms_output.put_line(k); 

    end loop;
     end;  exception 捕获异常 declare     v_temp number(4);
     begin     select empno into v_temp from emp where deptno=10; exception     when too_many_rows then     dbms_output.put_line('太多记录了');
     when others then     dbms_output.put_line('error');
     end;  没有数据错误 declare     v_temp number(4);
     begin     select empno into v_temp from emp where deptno=2222; exception     when no_data_found then     dbms_output.put_line('没数据');
     when others then     dbms_output.put_line('error'); 

    end / 错误处理  create table errorlog (  id number primary key, errcode number, errmsg varchar2(1024), errdate date  );   create sequence seq_errorlog_id start with 1 increment by 1

    declare  v_deptno dept.deptno%type:=10; v_errcode number;  v_errmsg varchar2(1024);
     begin  delete from dept where deptno=v_deptno; exception when others then     rollback;      v_errcode:=SQLCODE;     v_errmsg:=SQLERRN;      insert into errorlog values(seq_errorlog_id.nextval,v_errcode,v_errmsg,sysdate); 
        commit;

     end
    游标 
    declare 
       cursor c is 
              select * from emp; 
       v_emp c%rowtype; 
       begin        open c;        fetch c into v_emp;           --(取游标的第一个值插入v_emp,在不断的循环)       dbms_output.put_line(v_emp.ename);       close c;    end; 例子 declare     cursor c is         select * from emp;   
          v_emp c%rowtype; 
        begin         open c; 
        loop         
    fetch c into v_emp;  
          exit when(c%notfound);         dbms_output.put_line(v_emp.ename);  
        
    end loop;   
      close c; 
    end;   declare     cursor c is         select * from emp;
            v_emp c%rowtype;   
      begin         open c;         fetch c into v_emp;      while(c%found) loop         dbms_output.put_line(v_emp.ename);  
          
    fetch c into v_emp;
          end
     loop; 
        close c; 
    end;   declare     cursor c is           select * from emp;     begin           for v_emp in c loop           dbms_output.put_line(v_emp.ename);
         
    end loop;
     end;  带参数的游标  declare     cursor c(v_deptno emp.deptno%type,v_job emp.job%type)  
      is      select ename,sal from emp where deptno=v_deptno and job=v_job; 
    begin     for v_temp in c(30,'chick') loop          dbms_output.put_line(v_temp.ename);  
      
    end loop;
     end;  可更新的游标
    exec p执行存储过程  
    begin 
    p:
     end;  带参数的存储过程  create or replace procedure p  (v_a in number,v_b number,v_ret out number, v_temp in out number
    is 
    begin  if(v_a>v_b) then     v_ret:=v_a; 
       else     v_ret:=v_b; 
    end 
    if;      v_temp:=v_temp+1;
     end;  调用存储过程 declare v_a number:=3;
     v_b number:=4;
     v_ret number;  v_temp number:=5;
    begin     p(v_a,v_b,v_ret,v_temp); 
       dbms_output.put_line(v_ret);  
      dbms_output.put_line(v_temp);
     
    end;  show error返回错误信息 删除存储过程 存储过程中的函数  create or replace function sal_tax      (v_sal number)    
      return number is
     begin  if(v_sal<2000then     
    return 0.10; elsif(v_sal<2750then     
    return 0.5
    else      return 0.20;
     end if
    end;  触发器 create or replace trigger trig
    after update on dept
    for each row
    begin
    update emp set deptno=:NEW.deptno where deptno=:OLD.deptno;
    end; /
  • 相关阅读:
    好用的在线作图软件
    xml简介
    P1832 A+B Problem(再升级)
    P1831 杠杆数
    P1802 5倍经验日
    P1679 神奇的四次方数
    Android学习四、Android中的Adapter
    Android Activity Fragment 生命周期
    《C语言编写 学生成绩管理系统》
    线程池QueueUserWorkItem
  • 原文地址:https://www.cnblogs.com/ruishuang208/p/4095440.html
Copyright © 2011-2022 走看看