123: --------------------------
124: c_newline constant varchar(1) default '
125: ';
126: --
127: -- dbms_describe values for different data types.
128: --
129: c_dtype_undefined constant number default 0;
130: c_dtype_varchar2 constant number default 1;
131: c_dtype_number constant number default 2;
134: c_dtype_date constant number default 12;
135: c_dtype_boolean constant number default 252;
136: c_dtype_clob constant number default 112; -- added for bug 13362792
137: --
138: -- dbms_describe values for different parameter passing modes.
139: --
140: c_ptype_in constant number default 0;
141: c_ptype_out constant number default 1;
142: c_ptype_in_out constant number default 2;
484: -- algorithm was agreed by Peter Attwood (HRMS API strategy).
485: -- ------------------------------------------------------------------------
486: procedure get_latest_api
487: (
488: p_overload in out nocopy dbms_describe.number_table,
489: p_position in out nocopy dbms_describe.number_table,
490: p_level in out nocopy dbms_describe.number_table,
491: p_argument_name in out nocopy dbms_describe.varchar2_table,
492: p_datatype in out nocopy dbms_describe.number_table,
485: -- ------------------------------------------------------------------------
486: procedure get_latest_api
487: (
488: p_overload in out nocopy dbms_describe.number_table,
489: p_position in out nocopy dbms_describe.number_table,
490: p_level in out nocopy dbms_describe.number_table,
491: p_argument_name in out nocopy dbms_describe.varchar2_table,
492: p_datatype in out nocopy dbms_describe.number_table,
493: p_default_value in out nocopy dbms_describe.number_table,
486: procedure get_latest_api
487: (
488: p_overload in out nocopy dbms_describe.number_table,
489: p_position in out nocopy dbms_describe.number_table,
490: p_level in out nocopy dbms_describe.number_table,
491: p_argument_name in out nocopy dbms_describe.varchar2_table,
492: p_datatype in out nocopy dbms_describe.number_table,
493: p_default_value in out nocopy dbms_describe.number_table,
494: p_in_out in out nocopy dbms_describe.number_table,
487: (
488: p_overload in out nocopy dbms_describe.number_table,
489: p_position in out nocopy dbms_describe.number_table,
490: p_level in out nocopy dbms_describe.number_table,
491: p_argument_name in out nocopy dbms_describe.varchar2_table,
492: p_datatype in out nocopy dbms_describe.number_table,
493: p_default_value in out nocopy dbms_describe.number_table,
494: p_in_out in out nocopy dbms_describe.number_table,
495: p_length in out nocopy dbms_describe.number_table,
488: p_overload in out nocopy dbms_describe.number_table,
489: p_position in out nocopy dbms_describe.number_table,
490: p_level in out nocopy dbms_describe.number_table,
491: p_argument_name in out nocopy dbms_describe.varchar2_table,
492: p_datatype in out nocopy dbms_describe.number_table,
493: p_default_value in out nocopy dbms_describe.number_table,
494: p_in_out in out nocopy dbms_describe.number_table,
495: p_length in out nocopy dbms_describe.number_table,
496: p_precision in out nocopy dbms_describe.number_table,
489: p_position in out nocopy dbms_describe.number_table,
490: p_level in out nocopy dbms_describe.number_table,
491: p_argument_name in out nocopy dbms_describe.varchar2_table,
492: p_datatype in out nocopy dbms_describe.number_table,
493: p_default_value in out nocopy dbms_describe.number_table,
494: p_in_out in out nocopy dbms_describe.number_table,
495: p_length in out nocopy dbms_describe.number_table,
496: p_precision in out nocopy dbms_describe.number_table,
497: p_scale in out nocopy dbms_describe.number_table,
490: p_level in out nocopy dbms_describe.number_table,
491: p_argument_name in out nocopy dbms_describe.varchar2_table,
492: p_datatype in out nocopy dbms_describe.number_table,
493: p_default_value in out nocopy dbms_describe.number_table,
494: p_in_out in out nocopy dbms_describe.number_table,
495: p_length in out nocopy dbms_describe.number_table,
496: p_precision in out nocopy dbms_describe.number_table,
497: p_scale in out nocopy dbms_describe.number_table,
498: p_radix in out nocopy dbms_describe.number_table,
491: p_argument_name in out nocopy dbms_describe.varchar2_table,
492: p_datatype in out nocopy dbms_describe.number_table,
493: p_default_value in out nocopy dbms_describe.number_table,
494: p_in_out in out nocopy dbms_describe.number_table,
495: p_length in out nocopy dbms_describe.number_table,
496: p_precision in out nocopy dbms_describe.number_table,
497: p_scale in out nocopy dbms_describe.number_table,
498: p_radix in out nocopy dbms_describe.number_table,
499: p_spare in out nocopy dbms_describe.number_table,
492: p_datatype in out nocopy dbms_describe.number_table,
493: p_default_value in out nocopy dbms_describe.number_table,
494: p_in_out in out nocopy dbms_describe.number_table,
495: p_length in out nocopy dbms_describe.number_table,
496: p_precision in out nocopy dbms_describe.number_table,
497: p_scale in out nocopy dbms_describe.number_table,
498: p_radix in out nocopy dbms_describe.number_table,
499: p_spare in out nocopy dbms_describe.number_table,
500: p_apis out nocopy boolean,
493: p_default_value in out nocopy dbms_describe.number_table,
494: p_in_out in out nocopy dbms_describe.number_table,
495: p_length in out nocopy dbms_describe.number_table,
496: p_precision in out nocopy dbms_describe.number_table,
497: p_scale in out nocopy dbms_describe.number_table,
498: p_radix in out nocopy dbms_describe.number_table,
499: p_spare in out nocopy dbms_describe.number_table,
500: p_apis out nocopy boolean,
501: p_parameters out nocopy boolean
494: p_in_out in out nocopy dbms_describe.number_table,
495: p_length in out nocopy dbms_describe.number_table,
496: p_precision in out nocopy dbms_describe.number_table,
497: p_scale in out nocopy dbms_describe.number_table,
498: p_radix in out nocopy dbms_describe.number_table,
499: p_spare in out nocopy dbms_describe.number_table,
500: p_apis out nocopy boolean,
501: p_parameters out nocopy boolean
502: ) is
495: p_length in out nocopy dbms_describe.number_table,
496: p_precision in out nocopy dbms_describe.number_table,
497: p_scale in out nocopy dbms_describe.number_table,
498: p_radix in out nocopy dbms_describe.number_table,
499: p_spare in out nocopy dbms_describe.number_table,
500: p_apis out nocopy boolean,
501: p_parameters out nocopy boolean
502: ) is
503: i binary_integer;
503: i binary_integer;
504: j binary_integer;
505: l_chosen_overload number;
506: l_max_mandatory_args number;
507: l_distinct_overloads dbms_describe.number_table;
508: begin
509: if g_debug then
510: hr_utility.trace('Entered get_latest_api.');
511: end if;
677: p_parameter_tbl out nocopy t_parameter_tbl,
678: p_parameter_counts out nocopy t_parameter_counts
679: )
680: is
681: -- dbms_describe parameters.
682: l_overload dbms_describe.number_table;
683: l_position dbms_describe.number_table;
684: l_level dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
678: p_parameter_counts out nocopy t_parameter_counts
679: )
680: is
681: -- dbms_describe parameters.
682: l_overload dbms_describe.number_table;
683: l_position dbms_describe.number_table;
684: l_level dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
686: l_datatype dbms_describe.number_table;
679: )
680: is
681: -- dbms_describe parameters.
682: l_overload dbms_describe.number_table;
683: l_position dbms_describe.number_table;
684: l_level dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
686: l_datatype dbms_describe.number_table;
687: l_default_value dbms_describe.number_table;
680: is
681: -- dbms_describe parameters.
682: l_overload dbms_describe.number_table;
683: l_position dbms_describe.number_table;
684: l_level dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
686: l_datatype dbms_describe.number_table;
687: l_default_value dbms_describe.number_table;
688: l_in_out dbms_describe.number_table;
681: -- dbms_describe parameters.
682: l_overload dbms_describe.number_table;
683: l_position dbms_describe.number_table;
684: l_level dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
686: l_datatype dbms_describe.number_table;
687: l_default_value dbms_describe.number_table;
688: l_in_out dbms_describe.number_table;
689: l_length dbms_describe.number_table;
682: l_overload dbms_describe.number_table;
683: l_position dbms_describe.number_table;
684: l_level dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
686: l_datatype dbms_describe.number_table;
687: l_default_value dbms_describe.number_table;
688: l_in_out dbms_describe.number_table;
689: l_length dbms_describe.number_table;
690: l_precision dbms_describe.number_table;
683: l_position dbms_describe.number_table;
684: l_level dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
686: l_datatype dbms_describe.number_table;
687: l_default_value dbms_describe.number_table;
688: l_in_out dbms_describe.number_table;
689: l_length dbms_describe.number_table;
690: l_precision dbms_describe.number_table;
691: l_scale dbms_describe.number_table;
684: l_level dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
686: l_datatype dbms_describe.number_table;
687: l_default_value dbms_describe.number_table;
688: l_in_out dbms_describe.number_table;
689: l_length dbms_describe.number_table;
690: l_precision dbms_describe.number_table;
691: l_scale dbms_describe.number_table;
692: l_radix dbms_describe.number_table;
685: l_argument_name dbms_describe.varchar2_table;
686: l_datatype dbms_describe.number_table;
687: l_default_value dbms_describe.number_table;
688: l_in_out dbms_describe.number_table;
689: l_length dbms_describe.number_table;
690: l_precision dbms_describe.number_table;
691: l_scale dbms_describe.number_table;
692: l_radix dbms_describe.number_table;
693: l_spare dbms_describe.number_table;
686: l_datatype dbms_describe.number_table;
687: l_default_value dbms_describe.number_table;
688: l_in_out dbms_describe.number_table;
689: l_length dbms_describe.number_table;
690: l_precision dbms_describe.number_table;
691: l_scale dbms_describe.number_table;
692: l_radix dbms_describe.number_table;
693: l_spare dbms_describe.number_table;
694: --
687: l_default_value dbms_describe.number_table;
688: l_in_out dbms_describe.number_table;
689: l_length dbms_describe.number_table;
690: l_precision dbms_describe.number_table;
691: l_scale dbms_describe.number_table;
692: l_radix dbms_describe.number_table;
693: l_spare dbms_describe.number_table;
694: --
695: l_first number;
688: l_in_out dbms_describe.number_table;
689: l_length dbms_describe.number_table;
690: l_precision dbms_describe.number_table;
691: l_scale dbms_describe.number_table;
692: l_radix dbms_describe.number_table;
693: l_spare dbms_describe.number_table;
694: --
695: l_first number;
696: l_last number;
689: l_length dbms_describe.number_table;
690: l_precision dbms_describe.number_table;
691: l_scale dbms_describe.number_table;
692: l_radix dbms_describe.number_table;
693: l_spare dbms_describe.number_table;
694: --
695: l_first number;
696: l_last number;
697: l_seqno number; -- Sequence in dbms_describle list.
739: hr_utility.raise_error;
740: end;
741:
742: if g_debug then
743: hr_utility.trace('Successful dbms_describe.');
744: end if;
745:
746: --
747: -- Get the latest overloaded version of the API.
1223: p_distinct_parameter_tbl in out nocopy t_function_parameter_tbl,
1224: p_parameter_counts in out nocopy t_parameter_counts
1225: )
1226: is
1227: -- dbms_describe parameters.
1228: l_overload dbms_describe.number_table;
1229: l_position dbms_describe.number_table;
1230: l_level dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1224: p_parameter_counts in out nocopy t_parameter_counts
1225: )
1226: is
1227: -- dbms_describe parameters.
1228: l_overload dbms_describe.number_table;
1229: l_position dbms_describe.number_table;
1230: l_level dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1232: l_datatype dbms_describe.number_table;
1225: )
1226: is
1227: -- dbms_describe parameters.
1228: l_overload dbms_describe.number_table;
1229: l_position dbms_describe.number_table;
1230: l_level dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1232: l_datatype dbms_describe.number_table;
1233: l_default_value dbms_describe.number_table;
1226: is
1227: -- dbms_describe parameters.
1228: l_overload dbms_describe.number_table;
1229: l_position dbms_describe.number_table;
1230: l_level dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1232: l_datatype dbms_describe.number_table;
1233: l_default_value dbms_describe.number_table;
1234: l_in_out dbms_describe.number_table;
1227: -- dbms_describe parameters.
1228: l_overload dbms_describe.number_table;
1229: l_position dbms_describe.number_table;
1230: l_level dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1232: l_datatype dbms_describe.number_table;
1233: l_default_value dbms_describe.number_table;
1234: l_in_out dbms_describe.number_table;
1235: l_length dbms_describe.number_table;
1228: l_overload dbms_describe.number_table;
1229: l_position dbms_describe.number_table;
1230: l_level dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1232: l_datatype dbms_describe.number_table;
1233: l_default_value dbms_describe.number_table;
1234: l_in_out dbms_describe.number_table;
1235: l_length dbms_describe.number_table;
1236: l_precision dbms_describe.number_table;
1229: l_position dbms_describe.number_table;
1230: l_level dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1232: l_datatype dbms_describe.number_table;
1233: l_default_value dbms_describe.number_table;
1234: l_in_out dbms_describe.number_table;
1235: l_length dbms_describe.number_table;
1236: l_precision dbms_describe.number_table;
1237: l_scale dbms_describe.number_table;
1230: l_level dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1232: l_datatype dbms_describe.number_table;
1233: l_default_value dbms_describe.number_table;
1234: l_in_out dbms_describe.number_table;
1235: l_length dbms_describe.number_table;
1236: l_precision dbms_describe.number_table;
1237: l_scale dbms_describe.number_table;
1238: l_radix dbms_describe.number_table;
1231: l_argument_name dbms_describe.varchar2_table;
1232: l_datatype dbms_describe.number_table;
1233: l_default_value dbms_describe.number_table;
1234: l_in_out dbms_describe.number_table;
1235: l_length dbms_describe.number_table;
1236: l_precision dbms_describe.number_table;
1237: l_scale dbms_describe.number_table;
1238: l_radix dbms_describe.number_table;
1239: l_spare dbms_describe.number_table;
1232: l_datatype dbms_describe.number_table;
1233: l_default_value dbms_describe.number_table;
1234: l_in_out dbms_describe.number_table;
1235: l_length dbms_describe.number_table;
1236: l_precision dbms_describe.number_table;
1237: l_scale dbms_describe.number_table;
1238: l_radix dbms_describe.number_table;
1239: l_spare dbms_describe.number_table;
1240: --
1233: l_default_value dbms_describe.number_table;
1234: l_in_out dbms_describe.number_table;
1235: l_length dbms_describe.number_table;
1236: l_precision dbms_describe.number_table;
1237: l_scale dbms_describe.number_table;
1238: l_radix dbms_describe.number_table;
1239: l_spare dbms_describe.number_table;
1240: --
1241: l_first_overload binary_integer;
1234: l_in_out dbms_describe.number_table;
1235: l_length dbms_describe.number_table;
1236: l_precision dbms_describe.number_table;
1237: l_scale dbms_describe.number_table;
1238: l_radix dbms_describe.number_table;
1239: l_spare dbms_describe.number_table;
1240: --
1241: l_first_overload binary_integer;
1242: l_seqno binary_integer;
1235: l_length dbms_describe.number_table;
1236: l_precision dbms_describe.number_table;
1237: l_scale dbms_describe.number_table;
1238: l_radix dbms_describe.number_table;
1239: l_spare dbms_describe.number_table;
1240: --
1241: l_first_overload binary_integer;
1242: l_seqno binary_integer;
1243: l_currpos binary_integer;