日期:2014-05-16  浏览次数:20503 次

存储过程批量修改
不知道为什么,在调用这个存储过程的时候老获取不到应用程序传过来的值。
不多说,直接贴代码
类型创建:
drop type irms_type_ma_table;
drop type irms_type_ma ;
create or replace type irms_type_ma as object (
       user_order_id            varchar2(20),
       in_res_attribute_code    varchar2(50),
       res_value                varchar2(50),
       req_user                 varchar2(20),
       req_date                 varchar2(20),
       op_user                  varchar2(20)
);
CREATE OR REPLACE TYPE irms_type_ma_table AS table OF irms_type_ma ;


存储过程创建:
create or replace procedure proc_modifyattribute(params in irms_type_ma_table,outp out varchar2)
as
       tmp_user_order_id            varchar2(20);                  --入参user_order_id
       tmp_in_res_attribute_code    varchar2(50);                  --入参in_res_attribute_code
       tmp_res_table_column_value   varchar2(50);                  --入参tmp_res_table_column_value
       tmp_product_id               rt_UserOrder_info.product_id%type;
       tmp_net_type_id              rt_UserOrder_info.net_type_id%type;
       tmp_in_busi_res_kind_code    rt_ResReturnConfig_dict.in_busi_res_kind_code%type;
       tmp_in_atom_res_value        rt_ResReturnConfig_dict.in_atom_res_value%type;
       tmp_in_res_table             rt_ResReturnConfig_dict.in_res_table%type;
       tmp_in_res_table_pk          rt_ResReturnConfig_dict.in_res_table_pk%type;
       tmp_in_res_table_column      rt_ResReturnConfig_dict.in_res_table_column%type;
       tmp_res_id                   rt_WorkRes_info.res_id%type;
       tmp_atom_res_kind_code       rt_WorkAtomRes_info.atom_res_kind_code%type;
       tmp_value                    rt_WorkAtomRes_info.value1%type;  --资源值
       tmp_sql                      varchar2(1000);
       
       cursor curs is select *  from the (
           select cast (params as irms_type_ma_table) from dual
       );
begin
  for  cur in curs loop
  --赋值
  tmp_user_order_id := cur.user_order_id ;
  tmp_in_res_attribute_code := cur.in_res_attribute_code;
  tmp_res_table_column_value := cur.res_value;
  
  outp :=  tmp_user_order_id;
   
  --1.查询出某个用户订单对应的产品ID(product_id)、接入方式(net_type_id)
  dbms_output.put_line('1.查询出某个用户订单对应的产品ID(tmp_product_id)、接入方式(tmp_net_type_id)');
  dbms_output.put_line('start...');

  select
       userorder_info.product_id,userorder_info.net_type_id into tmp_product_id,tmp_net_type_id
  from
       rt_UserOrder_info  userorder_info
  where
       userorder_info.user_order_id = tmp_user_order_id;

  dbms_output.put_line('产品类型为--->'||tmp_product_id);
  dbms_output.put_line('接入方式为--->'||tmp_net_type_id);
  dbms_output.put_line('end...');
  dbms_output.put_line('');
  
  

    /*2.根据产品ID(tmp_product_id)、接入方式(tmp_net_type_id)、资源属性编码(tmp_in_res_attribute_code)
  查询出业务资源种类编码(tmp_in_busi_res_kind_code)、原子资源value (tmp_in_atom_res_value)、资源属性表名称(tmp_in_res_table)、
  资源属性表主键(tmp_in_res_table_pk)、资源属性字段(tmp_in_res_table_column)*/
  dbms_output.put_line('2.根据产品ID(tmp_product_id)、接入方式(tmp_net_type_id)、资源属性编码(tmp_in_res_attribute_code)
  查询出业务资源种类编码(tmp_in_busi_res_kind_code)、原子资源value (tmp_in_atom_res_value)、资源属性表名称(tmp_in_res_table)、
  资源属性表主键(tmp_in_res_table_pk)、资源属性字段(tmp_in_res_table_column)');
  dbms_output.put_line('start...');

  select
        rrcd.in_busi_res_kind_code,
        rrcd.in_atom_res_value,
        rrcd.in_res_table,
        rrcd.in_res_table_pk,
        rrcd.in_res_table_column
        into
        tmp_in_busi_res_kind_code,
        tmp_in_atom_res_value,
        tmp_in_res_table,
        tmp_in_res_table_pk,
        tmp_in_res_table_column
  from
        rt_ResReturnConfig_dict rrcd
  where
        rrcd.product_id = tmp_product_id and
        rrcd.net_type_code  = tmp_net_type_id and
        rrcd.in_res_attribute_code = tmp_in_res_attribute_code;

  dbms_output.put_line('业务资源种类编码为--->'||tmp_in_busi_res_kind_code);
  dbms_output.put_line('原子资源value为--->'||tmp_in_atom_res_valu