Oracle存储过程使用游标的技巧代码

来源:未知 责任编辑:责任编辑 发表时间:2013-11-17 14:41 点击:

 

在Oracle中,他以一个语句块为一个默认的事务。也就是说,如果你就单单只执行一段ORACLE的语句块,他默认是以事务的形式执行的。

    CREATE OR REPLACE PROCEDURE sp_EditInlayOut(

    FID NUMBER, --修改记录的ID T_INLAYOUT表的主键

    InlayBoxIDs varchar2, --修改的记录

    BoxCount number, --装箱数量

    ApplyUserID varchar2, --申请人编号

    StoreUserID varchar2, --库管编号

    ConfirmState char, --确认状态

    ExistState char, --存在状态

    strErr OUT varchar2 --存储过程执行结果。成功返回空,失败返回错误原因

    )

    AS

    --定义变量

    v_Now DATE;

    v_Now2 date;

    v_LogID number;

    v_ChipID number;

    v_sql varchar2(2000);

    BEGIN

    --记录日志

    INSERT INTO T_InlayOut_Log(F_InlayBoxIDs,f_Boxcount,f_Applyuserid,f_Storeuserid,f_Addtime,f_Confirmstate

    ,f_Existstate, f_modifyid, f_modifytime, f_modifyuserid )

    ((SELECT F_InlayBoxIDs,f_Boxcount,f_Applyuserid,f_Storeuserid,f_Addtime,f_Confirmstate,f_Existstate

    ,FID,SYSDATE,StoreUserID FROM T_InlayOut WHERE F_ID=FID));

    --取刚插入记录的ID

    select seq_t_inlayout_log.currval into v_LogID from dual;

    --定义游标

    DECLARE CURSOR myCusor IS SELECT F_ID FROM T_CHIP WHERE F_InlayBoxID IN (SELECT f_ID FROM

    T_InlayBox where F_InlayOutID = FID);

    --开始使用游标取数据

    BEGIN

    OPEN myCusor;

    LOOP

    FETCH myCusor INTO v_ChipID;

    --游标取不到数据则退出

    EXIT WHEN myCusor%NOTFOUND;

    SELECT MIN(F_CurrentTime)INTO v_Now FROM t_Chipstatehistory WHERE

    (F_HistoryState = 'Confirm_InlayIn')AND F_ChipID = v_ChipID;

    --改变芯片表的状态

    UPDATEt_chip SET f_State = 'Confirm_InlayIn',F_CompareTime = v_Now WHERE F_ID = v_ChipID;

    --保存芯片状态历史记录

    INSERT INTO T_CHIPSTATEHISTORY(f_chipid, f_Historystate,F_TABLEID,f_Currenttime,F_TABLENAME)

    VALUES

    (v_ChipID,'Confirm_InlayIn',v_LogID,SYSDATE,'T_InlayOut_Log');

    END LOOP;

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Table函数使用简介
  • Oracle数据库Constraint约束的常用操作及异常处理
  • Bulk Collect性能分析(zz)
  • export/import的使用
  • OCP043第十五讲 Database Security
  • ORACLE10gr2数据导入MySQL方案
  • oracle 让sys用户可以使用isqlplus
  • 在oracle数据库下使用iSQL*Plus DBA访问数据库
  • Oracle行列转换小结
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1