读书人

存储过程批量批改

发布时间: 2012-08-02 11:35:25 作者: rapoo

存储过程批量修改
不知道为什么,在调用这个存储过程的时候老获取不到应用程序传过来的值。
不多说,直接贴代码
类型创建:

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_value);  dbms_output.put_line('资源属性表名称为--->'||tmp_in_res_table);  dbms_output.put_line('资源属性表主键为--->'||tmp_in_res_table_pk);  dbms_output.put_line('资源属性字段为--->'||tmp_in_res_table_column);  dbms_output.put_line('end...');  dbms_output.put_line('');   /*3.根据用户订单号(tmp_user_order_id)和业务资源种类编码(tmp_in_busi_res_kind_code)从来确定资源ID(tmp_res_id)*/  dbms_output.put_line('3.根据用户订单号(tmp_user_order_id)和业务资源种类编码(tmp_in_busi_res_kind_code)从来确定资源ID(tmp_res_id)');  dbms_output.put_line('start...');  select        wri.res_id into tmp_res_id  from        rt_WorkRes_info wri  where        wri.user_order_id=tmp_user_order_id and        wri.res_kind_code=tmp_in_busi_res_kind_code;  dbms_output.put_line('资源ID为--->'||tmp_res_id);  dbms_output.put_line('end...');  dbms_output.put_line('');  /*4.根据资源ID(tmp_res_id),确定原子资源种类(tmp_atom_res_kind_code)、以及它的资源值*/  dbms_output.put_line('4.根据资源ID(tmp_res_id),确定原子资源种类(tmp_atom_res_kind_code)、以及它的资源值');  dbms_output.put_line('start...');  tmp_sql := 'select wari.atom_res_kind_code,wari.'||tmp_in_atom_res_value||' from rt_WorkAtomRes_info wari where wari.res_id=:1';  execute immediate tmp_sql into tmp_atom_res_kind_code,tmp_value using tmp_res_id ;  dbms_output.put_line('原子资源种类为--->'||tmp_atom_res_kind_code);  dbms_output.put_line('资源值value为--->'||tmp_value);  dbms_output.put_line('end...');  dbms_output.put_line('');          /*5.修改资源属性*/  dbms_output.put_line('5.修改资源属性');  dbms_output.put_line('start...');    tmp_sql := 'update '||tmp_in_res_table||' set '||tmp_in_res_table_column||'=:1 where '||tmp_in_res_table_pk||'=:2';  execute immediate tmp_sql using tmp_res_table_column_value,tmp_value ;      dbms_output.put_line('修改资源属性成功!');  dbms_output.put_line('修改之后的资源属性值为--->'||tmp_res_table_column_value);  dbms_output.put_line('end...');  dbms_output.put_line('');    end loop;  commit;    exception    when others then         outp := SQLERRM ;         dbms_output.put_line('执行失败!'||SQLERRM);end;
1 楼 javaliulang 2012-02-16 我自己灌个水。

读书人网 >其他数据库

热点推荐