PACKAGE paramlist_pkg IS -- A function which initializes a parameter list. FUNCTION initialize (parm_list_name_in IN VARCHAR2) RETURN PARAMLIST; /* The overloaded add procedures: */ PROCEDURE add (pl_id_in IN PARAMLIST, name_in IN VARCHAR2, value_in IN VARCHAR2); PROCEDURE add (pl_id_in IN PARAMLIST, name_in IN VARCHAR2, value_in IN NUMBER); PROCEDURE add (pl_id_in IN PARAMLIST, name_in IN VARCHAR2, value_in IN DATE, format_mask_in IN VARCHAR2 := 'MM/DD/YY'); END paramlist_pkg; PACKAGE BODY paramlist_pkg IS /* || First things first: || Rather than require a developer to write the code to check for the || existence of a parameter list, then destroy and re-create it to || assure oneself of a "clean" list, I can move such code into a very || general function that takes the name of the parameter list and || returns the pointer to the parameter list. */ FUNCTION initialize (parm_list_name_in IN VARCHAR2) RETURN PARAMLIST IS return_value PARAMLIST BEGIN return_value := GET_PARAMETER_LIST (parm_list_name_in); IF NOT ID_NULL (return_value) THEN DESTROY_PARAMETER_LIST (return_value); END IF; RETURN CREATE_PARAMETER_LIST (parm_list_name_in); END initialize; /* || Now my overloaded add procedures. Notice that they only have three || arguments, as opposed to the four of the ADD_PARAMETER built-in. || The only difference between these three versions of add is the || datatype of the last argument: VARCHAR2, NUMBER or DATE. */ PROCEDURE add (pl_id_in IN PARAMLIST, name_in IN VARCHAR2, value_in IN VARCHAR2) IS BEGIN ADD_PARAMETER (pl_id_in, name_in, TEXT_PARAMETER, value_in); END; PROCEDURE add (pl_id_in IN PARAMLIST, name_in IN VARCHAR2, value_in IN NUMBER) IS BEGIN ADD_PARAMETER (pl_id_in, name_in, TEXT_PARAMETER, TO_CHAR (value_in)); END; PROCEDURE add (pl_id_in IN PARAMLIST, name_in IN VARCHAR2, value_in IN DATE, format_mask_in IN VARCHAR2 := 'MM/DD/YY') IS BEGIN ADD_PARAMETER (pl_id_in, name_in, TEXT_PARAMETER, TO_CHAR (value_in, format_mask_in IN VARCHAR2)); END; END paramlist_pkg;