CREATE OR REPLACE PACKAGE PS_Global IS /* || ------------------------------- PutVal --------------------------------- - || Store a value in the appropriate globals table. The first three functions || support globals-by-number. The functions return the row or handle where || the data is stored. The last three procedures support globals-by-name. || Notice that the return datatype for the functions is BINARY_INTEGER. || Recall that in the current version of PL/SQL, you can only create || tables which are indexed by a BINARY_INTEGER. || ------------------------------------------------------------------------ - */ FUNCTION putval (number_in IN NUMBER) RETURN BINARY_INTEGER; FUNCTION putval (varchar2_in IN VARCHAR2) RETURN BINARY_INTEGER; FUNCTION putval (date_in IN DATE) RETURN BINARY_INTEGER; PROCEDURE putval (name_in IN VARCHAR2, number_in IN NUMBER); PROCEDURE putval (name_in IN VARCHAR2, varchar2_in IN VARCHAR2); PROCEDURE putval (name_in IN VARCHAR2, date_in IN DATE); /* || ------------------------------- NewVal --------------------------------- - || Replace a value for a specified numeric handle. This is only used by || globals-by-number. || ------------------------------------------------------------------------ - */ PROCEDURE newval (number_in IN NUMBER, row_in IN BINARY_INTEGER); PROCEDURE newval (varchar2_in IN VARCHAR2, row_in IN BINARY_INTEGER); PROCEDURE newval (date_in IN DATE, row_in IN BINARY_INTEGER); /* || ------------------------------- GetVal --------------------------------- - || Retrieve a value from the PSGlobal tables. When working with globals-by- || number, pass the handle as the first argument and receive the value || in the second argument. When working with globals-by-name, pass the || name of the global and receive the value. || || I really wanted to make this a FUNCTION. You give it a handle (name or || number) and getval RETURNs the value. The problem with this approach || is that I cannot overload programs which differ only by their || RETURN datatype. || ------------------------------------------------------------------------ - */ PROCEDURE getval (row_in IN BINARY_INTEGER, number_out OUT NUMBER); PROCEDURE getval (row_in IN BINARY_INTEGER, varchar2_out OUT VARCHAR2); PROCEDURE getval (row_in IN BINARY_INTEGER, date_out OUT DATE); PROCEDURE getval (name_in IN VARCHAR2, number_out OUT NUMBER); PROCEDURE getval (name_in IN VARCHAR2, varchar2_out OUT VARCHAR2); PROCEDURE getval (name_in IN VARCHAR2, date_out OUT DATE); /* || ------------------------------- DefVal --------------------------------- - || The defval procedures mimic the Oracle Forms DEFAULT_VALUE built-in. They || are only relevant for globals-by-name. || ------------------------------------------------------------------------ - */ PROCEDURE defval (number_in IN NUMBER, name_in IN VARCHAR2); PROCEDURE defval (varchar2_in IN VARCHAR2, name_in IN VARCHAR2); PROCEDURE defval (date_in IN DATE, name_in IN VARCHAR2); /* || ------------------------------- ClrVal --------------------------------- - || The clrval procedures clear globals from the underlying tables. You can || clear an individual global, in which case you must call the appropriate || clrval procedure by datatype (I cannot overload these since there is no || difference in the parameter lists). Within a data type you can clear by || numeric handle or "ALL", to clear all globals of that datatype. || || The clrval (without datatype) procedure is used to clear a named global. || || The clrval_all_globals wipes the slate clean on both globals-by-name and || globals-by-number. || ------------------------------------------------------------------------ - */ PROCEDURE clrval_number (row_in IN BINARY_INTEGER); PROCEDURE clrval_number (action_in IN VARCHAR2); PROCEDURE clrval_varchar2 (row_in IN BINARY_INTEGER); PROCEDURE clrval_varchar2 (action_in IN VARCHAR2); PROCEDURE clrval_date (row_in IN BINARY_INTEGER); PROCEDURE clrval_date (action_in IN VARCHAR2); PROCEDURE clrval (name_in IN VARCHAR2); PROCEDURE clrval_all_globals; /* || ------------------------------ Exceptions ------------------------------ - */ global_undefined EXCEPTION; global_failure EXCEPTION; END PS_Global; / show errors