在使用BDMS_SQL包时对表进行动态批量插入时,用bind_array()来绑定一个自定义类型的Table,Table的定义如下:
 Type AAA is table of [自定义数据类型]; a1 AAA;
当a1作为bind_array的参数时,提示数据类型不符合,后来我查阅了资料,发现bind_array()这个Procedure不能处理自定义数据类型,我想请教一下,有没有方法可以代替,我需要做自定义数据类型的批量插入。

解决方案 »

  1.   

    FUNCTION fn_generate_n(tdfk_no VARCHAR2) RETURN INTEGER IS
        RESULT INTEGER;
        v_insert_sql    VARCHAR2(1000);
        v_handle_cursor NUMBER;
        v_fetch_number Number;
        TYPE table_index_list IS TABLE OF var_arry_254_32; --var_arry_254_32是用户自定义的类型
        aa table_index_list;
    begin
    /*
      对AA进行填值操作
    */      v_insert_sql :=  v_insert_sql := ' insert into test(name) values(:bnd1)';
          v_handle_cursor := dbms_sql.open_cursor;
          dbms_sql.parse(v_handle_cursor, v_insert_sql,dbms_sql.native);
          
          dbms_sql.bind_arry(v_handle_cursor, 'bnd1', aa);
          v_fetch_number := dbms_sql.EXECUTE(v_handle_cursor);
          -- finish
          dbms_sql.close_cursor(v_handle_cursor);
          commit;
          RESULT := 1;
          return(RESULT);
    end fn_generate_n;
      

  2.   

    其中表Test中的name字段是一个var_arry_254_32(自定义数据类型)的字段