/// <summary>
/// 总部审核
/// </summary>
/// <param name="ht"></param>
/// <returns></returns>
public int Update(Hashtable ht)
{
//修改
StringBuilder sb = new StringBuilder();
sb.Append("declare \r\n");
sb.Append("n_id number; \r\n");
sb.Append("n_branch_id number;\r\n");
sb.Append("n_stock_exist_count number;\r\n");
sb.Append("n_stock number;\r\n");
sb.Append("v_code varchar2(50);\r\n");
sb.Append("cursor parts_apply_refer_data is select parts_id,fact_send_count,fact_receive_count,send_add_count,bohui_count from t_parts_apply_refer where apply_id=:apply_id;\r\n");
sb.Append(" parts_apply_refer_row parts_apply_refer_data%rowtype;\r\n");
sb.Append("begin \r\n");
sb.Append("lock table t_parts_stock in share mode wait 10;\r\n");
sb.Append("lock table t_newparts_apply in share mode wait 10;\r\n");
sb.Append("select id into n_id from t_parts_check where apply_id=:apply_id; \r\n");
sb.Append("select branch_id,apply_code into n_branch_id,v_code from t_newparts_apply where id=:apply_id; \r\n");
sb.Append("update t_parts_check set identify_audit_result=:identify_audit_result,identify_status=:identify_status,update_person=:update_person,update_time=sysdate where apply_id=:apply_id; \r\n");
sb.Append("update t_newparts_apply set status = :parts_apply_status , update_person=:update_person,update_time=sysdate where id = :apply_id; \r\n");

//审核通过,库存加入坏件
if (ht["parts_apply_status"].ToString()=="12")
{
sb.Append(" for parts_apply_refer_row in parts_apply_refer_data loop \r\n"); //循环遍历配件申请配件表中每一行数据
sb.Append("n_stock_exist_count:=0;\r\n");
sb.Append("if parts_apply_refer_row.bohui_count>0 then \r\n"); //只有驳回大于0的记录才能入库
sb.Append("select count(0),max(stock_count) into n_stock_exist_count,n_stock from t_parts_stock where branch_id=n_branch_id and parts_id=parts_apply_refer_row.parts_id and return_type=2; \r\n");
sb.Append("if n_stock_exist_count>0 then \r\n"); //如果说当前库存这条记录的库存数大于0就更新库存
sb.Append("update t_parts_stock set stock_count=stock_count+parts_apply_refer_row.bohui_count,update_time=sysdate where branch_id=n_branch_id and parts_id=parts_apply_refer_row.parts_id and return_type=2; \r\n");
sb.Append("insert into t_parts_in_out_history (id,part_id,parts_class,in_out_type,in_out_count,branch_id,precedure_code,operation_time,operation_person,remark,current_stock) values (seq_parts_his.nextval,parts_apply_refer_row.parts_id,2,1,parts_apply_refer_row.bohui_count,n_branch_id,v_code,sysdate,:update_person,'收件异常入库',n_stock+parts_apply_refer_row.bohui_count); \r\n");
sb.Append("else \r\n"); //否则添加当前库存这条记录的相关信息
sb.Append("insert into t_parts_stock (id,parts_id,branch_id,repair_id,stock_count,alarm_count,return_type,update_time) values (seq_parts_stock.nextval,parts_apply_refer_row.parts_id,n_branch_id,null,parts_apply_refer_row.bohui_count,1,2,sysdate); \r\n");
sb.Append("insert into t_parts_in_out_history (id,part_id,parts_class,in_out_type,in_out_count,branch_id,precedure_code,operation_time,operation_person,remark,current_stock) values (seq_parts_his.nextval,parts_apply_refer_row.parts_id,2,1,parts_apply_refer_row.bohui_count,n_branch_id,v_code,sysdate,:update_person,'收件异常入库',parts_apply_refer_row.bohui_count); \r\n");
sb.Append("end if; \r\n");
sb.Append("end if; \r\n");
sb.Append("end loop; \r\n");
}
//添加流程
sb.Append("insert into t_procedure_log (procedure_type,refer_id,status,handle_person,handle_time,remark) values (2,:apply_id,:parts_apply_status,:update_person,sysdate,:identify_audit_result); \r\n");
sb.Append("insert into t_procedure_log (procedure_type,refer_id,status,handle_person,handle_time,remark) values (7,n_id,:identify_status,:update_person,sysdate,:identify_audit_result); \r\n");

sb.Append("end; \r\n");
return oc.Execute(sb.ToString(),ht);
}

Oracle游标、参数的使用例子的更多相关文章

  1. Oracle游标带参数

    Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...

  2. Oracle使用jdbc调用带游标参数的存储过程

    package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...

  3. oracle 游标使用大全

    转:http://www.cnblogs.com/fjfzhkb/archive/2007/09/12/891031.html oracle的游标和例子! 游标-----内存中的一块区域,存放的是se ...

  4. Oracle游标动态赋值

    1. oracle游标动态赋值的小例子 -- 实现1:动态给游标赋值 -- 实现2:游标用表的rowtype声明,但数据却只配置表一行的某些字段时,遍历游标时需fetch into到精确字段 CREA ...

  5. Oracle游标

    转自:http://www.cnblogs.com/fjfzhkb/archive/2007/09/12/891031.html 游标-----内存中的一块区域,存放的是select 的结果      ...

  6. Oracle游标介绍

    Oracle游标使用详解: 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标.要在程序中使用游标,必须 ...

  7. [转载]oracle游标概念讲解

    原文URL:http://www.2cto.com/database/201203/122387.html ORACLE游标概念讲解 什么是游标?  ①从表中检索出结果集,从中每次指向一条记录进行交互 ...

  8. ORACLE游标概念讲解

    1,什么是游标? ①从表中检索出结果集,从中每次指向一条记录进行交互的机制. ②关系数据库中的操作是在完整的行集合上执行的.   由 SELECT 语句返回的行集合包括满足该语句的 WHERE 子句所 ...

  9. oracle --游标详解(转)

    转自:http://blog.csdn.net/liyong199012/article/details/8948952 游标的概念:     游标是SQL的一个内存工作区,由系统或用户以变量的形式定 ...

  10. oracle游标透彻详解分析

    主:本文来自:http://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 4.1 游标概念 4.1.1 处理显式游标 4.1.2 处理隐 ...

随机推荐

  1. ASP.NET 防盗链的实现[HttpHandler]

    本文转载:http://www.cnblogs.com/eflylab/archive/2008/06/16/1223373.html 有时我们需要防止其他网站直接引用我们系统中的图片,或下载文件链接 ...

  2. Android中的双向链表

    1.看源代码必须搞懂Android的数据结构.在init源代码中双向链表listnode使用非常多,它仅仅有prev和next两个指针,没有不论什么数据成员.这个和linux内核的list_head如 ...

  3. 边走边学Nodejs (基础入门篇)

    1.什么是Node.js Nodejs ,或者node, 是一个基于ChromeJavaScript执行时建立的平台.用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非堵 ...

  4. Protobuf的自动反射消息类型的方法

    1. 每个消息头部中带上type name,作为消息的类型标识 2. 通过type name可以找到描述符Descriptor*, FindMessageTypeByName 3. 通过描述符Desc ...

  5. iOS报错Expected selector for Objective-C method

    这个报错非常恶心:原因竟然是在导入头文件的地方多写了一个"+"号,可能问题在一个文件,报错在另一个文件

  6. vijos P1375 大整数(高精不熟的一定要做!)

    /* 我尼玛这题不想说啥了 亏了高精写的熟..... 加减乘除max都写了 高精二分 */ #include<iostream> #include<cstdio> #inclu ...

  7. VB几种函数参数传递方法,Variant,数组,Optional,ParamArray

    VB几种函数参数传递方法,Variant,数组,Optional,ParamArray 一) 过程的参数被缺省为具有 Variant 数据类型. 1)ByRef按 地址传递参数在 VB 中是缺省的 按 ...

  8. js 终止页面加载

    var xmlhttp = new XMLHttpRequest(); xmlhttp.abort(); window.stop();

  9. (转)ThinkPHP自定义模板标签详解

    转之--http://www.thinkphp.cn/topic/6258.html 模板标签让网站前台开发更加快速和简单,这让本该由程序猿才能完成的工作,现在只要稍懂得HTM的人也能轻易做到,这也就 ...

  10. Linux sed命令删除指定行

    一.删除包含匹配字符串的行## 删除包含baidu.com的所有行sed -i '/baidu.com/d' domain.file 二.删除匹配行及后所有行## 删除匹配20160229的行及后面所 ...