当前位置:首页 > 数据库 > Oracle

Oracle 存储过程学习笔记

1、存储过程简单实例

            CREATE
            OR
            REPLACE
            PROCEDURE
              存储过程名称 (参数in,参数out)

            AS
            --
             变量声明,每个声明用分号结束。可以在声明的同时初始化 
name varchar2(50);
age number(8) default0;

--开始逻辑运算BEGIN--业务逻辑END

2、游标实现方式、

--显式实现方式(可以实现多值)

            cursor cursorVar isselect event_id, isagain, rate from call_event where sender = v_sender;   -- 声明游标,select语句可以包括单引号等。beginopen cursorVar;    -- 打开游标      loop  
         fetch cursorVar into v_event_id, v_isagain, v_rate;       -- 取值  exitwhen cursorVar%notfound;                             --当没有记录时退出循环  
         dbms_output.put_line(v_event_id ||, || v_isagain ||, || v_rate);  
    end loop;  
     
    close cursorVar;   -- 关闭游标  --游标的属性有:%FOUND,%NOTFOUNRD,%ISOPEN,%ROWCOUNT;   --%FOUND:已检索到记录时,返回true   --%NOTFOUNRD:检索不到记录时,返回true   --%ISOPEN:游标已打开时返回true   --%ROWCOUNT:代表检索的记录数,从1开始   end;  

--隐式游标(可以实现查询多值)

            for currow in (  
   select t.col1, t.col2  
   from tableName t  
   where ...  
) loop  
    if currow.col1 =0thenreturn;    -- 中止sp,返回  endif;  
end loop; 

--带参数的游标(可以实现查询多值)

            declare
              
isok 
            integer
            ;  
v_event_id 
            number(10);  
v_isagain number(2);  
v_rate number(2);  
  
v_sender char(11) :=13800138000;  
  
cursor cursorVar(p_sender varchar2) isselect event_id, isagain, rate from call_event where sender = p_sender; -- 声明游标  beginopen cursorVar(v_sender);    -- 打开游标,在括号里传参。      loop  
         fetch cursorVar into v_event_id, v_isagain, v_rate;       -- 取值  exitwhen cursorVar%notfound;                             --当没有记录时退出循环  
         dbms_output.put_line(v_event_id ||, || v_isagain ||, || v_rate);  
    end loop;  
     
    close cursorVar;   -- 关闭游标  end;  

3、异常处理

            EXCEPTION 
   
            WHEN OTHERS THEN 
      vs_msg :=ERROR IN xxxxxxxxxxx_p(||is_ym||):||SUBSTR(SQLERRM,1,500);
 
   ROLLBACK; 

   --把当前错误记录进日志表。 INSERTINTO LOG_INFO(proc_name,error_info,op_date) 
   VALUES(xxxxxxxxxxx_p,vs_msg,SYSDATE); 
   COMMIT; 
   RETURN; 

 

参考oracle存储过程基础语法+提升+例子总结

       Oracle存储过程基本语法与基础教程 

原文:http://www.cnblogs.com/liuyp-ken/p/5751550.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐