------------------------------------------------------------------------------- ---File: $RCSfile: jrrule.jps $ ---Author: $Author: wstallar $ ---Date: $Date: 1998/12/16 15:49:23 $ ---Version: $Revision: 1.5 $ ---Status: $State: Exp $ ---Locked_by: $Locker: wstallar $ ---Description: ---Notes: ---RealAuth: ---IncepDate: ---Copyright: (c) Oracle Corporation 1998. All Rights Reserved. ------------------------------------------------------------------------------- ---Log of Changes from RCS ------------------------------------------------------------------------------- ---$Log: jrrule.jps $ --- Revision 1.5 1998/12/16 15:49:23 wstallar --- Moved code for parsing text based lists of rules (specs) from JR_WORKAREA --- Added code to allow comments to be included in specs. --- --- Revision 1.4 1998/09/25 08:27:19 wstallar --- Added more API methods for manipulating user defined rules. --- ---Revision 1.3 1998/09/17 15:58:03 cwilliam ---added newline at end of file to avoid > in sqlplus when running script --- ---Revision 1.2 1998/09/17 13:11:41 cwilliam ---added prompt describing the package --- ---Revision 1.1 1998/09/17 10:31:38 wstallar ---Initial revision --- ------------------------------------------------------------------------------- --- prompt Package Header: jr_rule create or replace package jr_rule is EXECUTE_ERROR exception; RULE_ERROR exception; SPEC_PARSE_ERROR exception; -- Characters used to delimit rule names and parameter values -- in text based rule specs. Eg: RULE_NAME(PARAM1,PARAM2,PARAM3) params_start_char constant varchar2(1):='('; params_end_char constant varchar2(1):=')'; params_sep_char constant varchar2(1):=','; -- Functions used to return these values (need functions, as -- cannot declare RESTRICT_REFERENCES pragmas on package variables function params_start return varchar2; function params_end return varchar2; function params_sep return varchar2; PRAGMA RESTRICT_REFERENCES(params_start,wnds,wnps); PRAGMA RESTRICT_REFERENCES(params_end,wnds,wnps); PRAGMA RESTRICT_REFERENCES(params_sep,wnds,wnps); -- Storage for set of objects returned by rule. -- Use package variable rather than passing as a parameter between -- methods to save memory (passing as an IN OUT parameter creates copy object_set jr_name.objver_list; -------------------------------------------------------- --- get_IRID() --- Gets the IRID of a rule from its name. -------------------------------------------------------- function get_IRID(rule_name in varchar2) return number; -------------------------------------------------------- --- get_param_names() --- Gets the names of a rules parameters from its irid. -------------------------------------------------------- procedure get_param_names(rule_id in number ,param_name1 out varchar2 ,param_name2 out varchar2 ,param_name3 out varchar2); -------------------------------------------------------- --- get_nls_param_names() --- Gets the NLS names of a rules parameters from its irid. -------------------------------------------------------- procedure get_nls_param_names(rule_id in number ,nls_param_name1 out varchar2 ,nls_param_name2 out varchar2 ,nls_param_name3 out varchar2); -------------------------------------------------------- --- get_param_values() --- Gets the values of parameters defined against --- spec entry for a particular rule, --- from the rule irid and the ivid of the configuration -------------------------------------------------------- procedure get_param_values(entry_id in number ,rule_id in number ,param_value1 out varchar2 ,param_value2 out varchar2 ,param_value3 out varchar2); -------------------------------------------------------- --- get_param_type() --- Returns the type of a rule parameter -------------------------------------------------------- function get_param_type(rule_id in number ,param_name in varchar2) return varchar2; -------------------------------------------------------- -- validate_param() -- Validates the supplied value for the given rule -- and parameter. Will post errors and raise exceptions. -- For date parameters, passes back the supplied date in -- the standard rule format (DD-MON-YYYY HH24:MI:SS) -------------------------------------------------------- procedure validate_param(rule_id in number ,param_seq in number ,param_val in out varchar2); -------------------------------------------------------- --- validate_date() --- Validates that a date parameter value is in a format --- that the rules package understands. Passes back the --- supplied date in the standard format --- (DD-MON-YYYY HH:MI:SS) --- Returns TRUE if date is in valid format. -------------------------------------------------------- function validate_date(param_val in out varchar2) return boolean; ------------------------------------------------------------- --- execute_rule() --- Wrapper for execute_rule that accepts names rather than --- irid/ivids. ------------------------------------------------------------- procedure execute_rule(rule_name in varchar2 ,config_name in varchar2 ,param1 in varchar2 := NULL ,param2 in varchar2 := NULL ,param3 in varchar2 := NULL); ------------------------------------------------------------- --- execute_rule() --- execute a given rule using the supplied parameters --- The results will be stored in the specified configuration --- or used to populate the specified workarea. ------------------------------------------------------------- procedure execute_rule(rule_irid in number ,config_ivid in number ,param1 in varchar2 := NULL ,param2 in varchar2 := NULL ,param3 in varchar2 := NULL ,workarea_id in number := NULL ,entry_seq in number := NULL); ------------------------------------------------------------- --- sort_object_set() --- Sorts the object set produced by a rule into order of --- ascending ivid. ------------------------------------------------------------- procedure sort_object_set; -------------------------------------------------------- --- populate_config() --- Puts an object set into the given configuration. --- Checks to prevent clashes occuring -------------------------------------------------------- procedure populate_config (config_ivid in number ,exclude_rule in varchar2 default 'N'); ------------------------------------------------------- --- jr_rule.CREATE_RULE() --- Create a user-defined rule with the given name and --- parameters. Return the IRID of the new rule. ------------------------------------------------------- function create_rule(rule_name in varchar2 ,parameter_name1 in varchar2 ,parameter_name2 in varchar2 ,parameter_name3 in varchar2 ,param_nls_name1 in varchar2 ,param_nls_name2 in varchar2 ,param_nls_name3 in varchar2 ,rule_sql in varchar2 ,exclude in char default 'N' ,param1_type in varchar2 default NULL ,param2_type in varchar2 default NULL ,param3_type in varchar2 default NULL) return number; ---------------------------------------------------------------- --- jr_rule.RENAME_RULE() --- Renames an existing user defined rule. ---------------------------------------------------------------- procedure rename_rule(old_name in varchar2 ,new_name in varchar2); ------------------------------------------------------------------ --- jr_rule.CHANGE_SQL() --- Changes the SQL of the specified rule, and the parameter names --- if supplied. ------------------------------------------------------------------ procedure change_sql(rule_name in varchar2 ,new_sql in varchar2 ,param1_name in varchar2 default NULL ,param1_nls_name in varchar2 default NULL ,param1_type in varchar2 default NULL ,param2_name in varchar2 default NULL ,param2_nls_name in varchar2 default NULL ,param2_type in varchar2 default NULL ,param3_name in varchar2 default NULL ,param3_nls_name in varchar2 default NULL ,param3_type in varchar2 default NULL ,exclude in char default 'N'); procedure change_sql(rule_id in number ,new_sql in varchar2 ,param1_name in varchar2 default NULL ,param1_nls_name in varchar2 default NULL ,param1_type in varchar2 default NULL ,param2_name in varchar2 default NULL ,param2_nls_name in varchar2 default NULL ,param2_type in varchar2 default NULL ,param3_name in varchar2 default NULL ,param3_nls_name in varchar2 default NULL ,param3_type in varchar2 default NULL ,exclude in char default 'N'); ------------------------------------------------------------------ --- jr_rule.DELETE_RULE() --- Deletes a user defined rule ------------------------------------------------------------------ procedure delete_rule(rule_name in varchar2); procedure delete_rule(rule_irid in number); ----------------------------------------------------------------------------- -- jr_rule.PARSE_SPEC() -- -- Recover a rule and its parameters from a text-based list. -- Foramat is RULE_NAME(PARAM1_VALUE,PARAM2_VALUE,PARAM3_VALUE) -- Comments may be incuded using 'REM','//','--' and '/*' '*/' procedure parse_spec(spec in out varchar2 ,rule out varchar2 ,param1 out varchar2 ,param2 out varchar2 ,param3 out varchar2); --Assert write-no-database-state on get_param_values so that it can --be used by jr_workarea.get_spec_text PRAGMA RESTRICT_REFERENCES(get_param_values,wnds); end; / --- ------------------------------------------------------------------------------- ---$$Header_is_done --- End of file $RCSfile: jrrule.jps $ -------------------------------------------------------------------------------