不多说,直接贴代码
类型创建:
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;