create or replace package body pkg_nkw_dnt_std timestamp '2006-07-07:10:10:10' is ------------------------------------------------------------------ -- 2006 DataPRO Developers - m@urelio ------------------------------------------------------------------ -- Version: 2.0.2 ------------------------------------------------------------------ -- Collections, Records, Variables, Constants, Exceptions, Cursors ------------------------------------------------------------------ ------------------------------------------------------------------ ----------------------- Private Section -------------------------- ------------------------------------------------------------------ ------------------------------------------------------------------ -- DATA_SORT ------------------------------------------------------------------ procedure data_sort is i binary_integer := 1; j i%TYPE; k i%TYPE; lv_least varchar2(30) := rpad('z',30,'z'); begin << main_loop >> while (gt_data.count > 0) loop j := gt_data.first; << least_loop >> while (j is not null) loop lv_least := least(lv_least, gt_data(j).column_name); j := gt_data.next(j); end loop least_loop; k := gt_data.first; << get_loop >> while (k is not null) loop if (lv_least = gt_data(k).column_name) then gt_sort(i).column_id := k; gt_sort(i).column_name := gt_data(k).column_name; gt_sort(i).data_type := gt_data(k).data_type; i := i + 1; gt_data.delete(k); lv_least := rpad('z',30,'z'); exit get_loop; end if; k := gt_data.next(k); end loop get_loop; end loop main_loop; exception when others then raise; end data_sort; ------------------------------------------------------------------ ------------------------ Public Section -------------------------- ------------------------------------------------------------------ ------------------------------------------------------------------ -- BUILD_STMT ------------------------------------------------------------------ procedure build_stmt(ft_data in gt_data%TYPE, fv_stmt in out varchar2) is i binary_integer; lv_type varchar2(30); begin gt_data := ft_data; gt_sort.delete; data_sort; if (fv_stmt is not null) then i := gt_sort.last; while (i is not null) loop if (upper(gt_sort(i).data_type) = 'DATE') then lv_type := 'date_value'; elsif (upper(gt_sort(i).data_type) = 'NUMBER') then lv_type := 'number_value'; elsif (upper(gt_sort(i).data_type) = 'VARCHAR2') then lv_type := 'varchar2_value'; end if; fv_stmt := replace(fv_stmt, ':old.' || lower(gt_sort(i).column_name), 'pkg_nkw_dnt.gt_old_data(' || gt_sort(i).column_id || ').' || lv_type); fv_stmt := replace(fv_stmt, ':new.' || lower(gt_sort(i).column_name), 'pkg_nkw_dnt.gt_new_data(' || gt_sort(i).column_id || ').' || lv_type); i := gt_sort.prior(i); end loop; end if; exception when others then raise; end build_stmt; end pkg_nkw_dnt_std; / show errors