Oracle存储过程


 

create or replace procedure ossBusiInfoImport
(ossBusiId in varchar2, reqId in varchar2, log_accept in varchar2, ele_key in varchar2, ele_val in varchar2)

is
    busiId pd_busi_instance_info.busi_id%TYPE;  --业务信息ID

    classid or_req_info.class_id%TYPE;

    element_val pd_element_instance_info.element_value%TYPE;

    --带参数游标
    cursor query_z(log_acc pd_element_instance_info.loginaccept%TYPE, b_id pd_element_instance_info.busi_id%TYPE, e_id pd_element_instance_info.element_id%TYPE)
    is select element_value from pd_element_instance_info where loginaccept=log_acc and busi_id=b_id and element_id=e_id;

    --带参数游标
    cursor query_m(log_acc pd_element_instance_mid.loginaccept%TYPE, b_id pd_element_instance_mid.busi_id%TYPE, e_id pd_element_instance_mid.element_id%TYPE)
    is select element_value from pd_element_instance_mid where loginaccept=log_acc and busi_id=b_id and element_id=e_id;

begin
    --根据reqId查询class_id
    select class_id into classid from or_req_info where req_id=reqId and login_accept=log_accept;

    --变更业务类型,更新中间表
    if(classid='10') then
        --根据一站式业务信息ID,查询对应的busiId
        select busi_id into busiId from pd_busi_instance_inter where oss_busi_id=ossBusiId;
    
        --更新电路代号
        if(ele_key='8077') then
            update pd_busi_instance_inter set BUSI_PHY_NUMBER=ele_val where busi_id=busiId and loginaccept=log_accept;
        end if;    

        --检查元素值是否存在,有则更新,无则插入
        if not query_m%ISOPEN then
            open query_m(log_accept, busiId, ele_key);
        end if;

        fetch query_m into element_val;

        if not query_m%FOUND then
            insert into pd_element_instance_mid values(log_accept, '', busiId, ele_key, ele_val, '');
        else
            update pd_element_instance_mid set element_value=ele_val where loginaccept=log_accept and busi_id=busiId and element_id=ele_key;
        end if;

        close query_m;
    --其它类型,更新正表
    else
        --根据一站式业务信息ID,查询对应的busiId
        select busi_id into busiId from pd_busi_instance_info where oss_busi_id=ossBusiId;
        
        --更新电路代号
        if(ele_key='8077') then
            update pd_busi_instance_info set BUSI_PHY_NUMBER=ele_val where busi_id=busiId and loginaccept=log_accept;
        end if;

        --检查元素值是否存在,有则更新,无则插入
        if not query_z%ISOPEN then
            open query_z(log_accept, busiId, ele_key);
        end if;

        fetch query_z into element_val;

        if not query_z%FOUND then
            insert into pd_element_instance_info values(log_accept, '', busiId, ele_key, ele_val);
        else
            update pd_element_instance_info set element_value=ele_val where busi_id=busiId and element_id=ele_key and loginaccept=log_accept;
        end if;

        close query_z;
    end if;

    commit;

    exception when others then
        DBMS_OUTPUT.put_line('sqlcode : ' || sqlcode);
        DBMS_OUTPUT.put_line('sqlerrm : ' || sqlerrm);    
        rollback;

end ossBusiInfoImport;

 

ibatis中调用:

 

<parameterMap id="ossupdateNumbersMap" class="java.util.Map">

<parameter property="busiId" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>

<parameter property="reqId"  jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>

<parameter property="loginAccept"  jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>

<parameter property="eNumber" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>

<parameter property="aNumber" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>

<parameter property="zNumber" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>

</parameterMap>

<procedure id="ossupdateNumbers" parameterMap="ossupdateNumbersMap">

{ call ossupdateNumbers(?, ?, ?, ?, ?, ?) }  

</procedure>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值