38: (
39: X_RULE_KEY in VARCHAR2
40: ) is
41: select RULE_ID
42: from AME_RULES
43: where RULE_KEY = X_RULE_KEY;
44:
45: cursor CSR_GET_RULE_USAGE
46: (
140:
141: function CALCULATE_USE_COUNT(X_ATTRIBUTE_ID ame_attribute_usages.attribute_id%type,
142: X_APPLICATION_ID ame_attribute_usages.application_id%type) return integer as
143: cursor RULE_CURSOR(X_APPLICATION_ID in integer) is
144: select AME_RULE_USAGES.RULE_ID, AME_RULES.ACTION_ID
145: from AME_RULES, AME_RULE_USAGES
146: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
147: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
148: and ((sysdate between AME_RULES.START_DATE
141: function CALCULATE_USE_COUNT(X_ATTRIBUTE_ID ame_attribute_usages.attribute_id%type,
142: X_APPLICATION_ID ame_attribute_usages.application_id%type) return integer as
143: cursor RULE_CURSOR(X_APPLICATION_ID in integer) is
144: select AME_RULE_USAGES.RULE_ID, AME_RULES.ACTION_ID
145: from AME_RULES, AME_RULE_USAGES
146: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
147: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
148: and ((sysdate between AME_RULES.START_DATE
149: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
142: X_APPLICATION_ID ame_attribute_usages.application_id%type) return integer as
143: cursor RULE_CURSOR(X_APPLICATION_ID in integer) is
144: select AME_RULE_USAGES.RULE_ID, AME_RULES.ACTION_ID
145: from AME_RULES, AME_RULE_USAGES
146: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
147: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
148: and ((sysdate between AME_RULES.START_DATE
149: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
150: or (sysdate < AME_RULES.START_DATE
144: select AME_RULE_USAGES.RULE_ID, AME_RULES.ACTION_ID
145: from AME_RULES, AME_RULE_USAGES
146: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
147: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
148: and ((sysdate between AME_RULES.START_DATE
149: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
150: or (sysdate < AME_RULES.START_DATE
151: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
152: AME_RULES.START_DATE + (1/86400))))
145: from AME_RULES, AME_RULE_USAGES
146: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
147: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
148: and ((sysdate between AME_RULES.START_DATE
149: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
150: or (sysdate < AME_RULES.START_DATE
151: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
152: AME_RULES.START_DATE + (1/86400))))
153: and ((sysdate between AME_RULE_USAGES.START_DATE
146: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
147: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
148: and ((sysdate between AME_RULES.START_DATE
149: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
150: or (sysdate < AME_RULES.START_DATE
151: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
152: AME_RULES.START_DATE + (1/86400))))
153: and ((sysdate between AME_RULE_USAGES.START_DATE
154: and nvl(AME_RULE_USAGES.END_DATE - (1/86400), sysdate))
147: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
148: and ((sysdate between AME_RULES.START_DATE
149: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
150: or (sysdate < AME_RULES.START_DATE
151: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
152: AME_RULES.START_DATE + (1/86400))))
153: and ((sysdate between AME_RULE_USAGES.START_DATE
154: and nvl(AME_RULE_USAGES.END_DATE - (1/86400), sysdate))
155: or (sysdate < AME_RULE_USAGES.START_DATE
148: and ((sysdate between AME_RULES.START_DATE
149: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
150: or (sysdate < AME_RULES.START_DATE
151: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
152: AME_RULES.START_DATE + (1/86400))))
153: and ((sysdate between AME_RULE_USAGES.START_DATE
154: and nvl(AME_RULE_USAGES.END_DATE - (1/86400), sysdate))
155: or (sysdate < AME_RULE_USAGES.START_DATE
156: and AME_RULE_USAGES.START_DATE < nvl(AME_RULE_USAGES.END_DATE,
179: if(TEMP_COUNT > 0) then
180: NEW_USE_COUNT := NEW_USE_COUNT + 1;
181: else
182: if(TEMPRULE.ACTION_ID is null) then
183: -- action_id is already migrated from ame_rules to ame_action_usages
184: select count(*)
185: into TEMP_COUNT
186: from
187: AME_MANDATORY_ATTRIBUTES,
206: into TEMP_COUNT
207: from
208: AME_MANDATORY_ATTRIBUTES,
209: AME_ACTIONS,
210: AME_RULES
211: where
212: AME_MANDATORY_ATTRIBUTES.ATTRIBUTE_ID = X_ATTRIBUTE_ID and
213: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
214: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
210: AME_RULES
211: where
212: AME_MANDATORY_ATTRIBUTES.ATTRIBUTE_ID = X_ATTRIBUTE_ID and
213: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
214: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
215: AME_RULES.RULE_ID = TEMPRULE.RULE_ID and
216: sysdate between AME_MANDATORY_ATTRIBUTES.START_DATE and
217: nvl(AME_MANDATORY_ATTRIBUTES.END_DATE - (1/86400), sysdate) and
218: sysdate between AME_ACTIONS.START_DATE and
211: where
212: AME_MANDATORY_ATTRIBUTES.ATTRIBUTE_ID = X_ATTRIBUTE_ID and
213: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
214: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
215: AME_RULES.RULE_ID = TEMPRULE.RULE_ID and
216: sysdate between AME_MANDATORY_ATTRIBUTES.START_DATE and
217: nvl(AME_MANDATORY_ATTRIBUTES.END_DATE - (1/86400), sysdate) and
218: sysdate between AME_ACTIONS.START_DATE and
219: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
216: sysdate between AME_MANDATORY_ATTRIBUTES.START_DATE and
217: nvl(AME_MANDATORY_ATTRIBUTES.END_DATE - (1/86400), sysdate) and
218: sysdate between AME_ACTIONS.START_DATE and
219: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
220: ((sysdate between AME_RULES.START_DATE and
221: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
222: (sysdate < AME_RULES.START_DATE and
223: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
224: AME_RULES.START_DATE + (1/86400))));
217: nvl(AME_MANDATORY_ATTRIBUTES.END_DATE - (1/86400), sysdate) and
218: sysdate between AME_ACTIONS.START_DATE and
219: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
220: ((sysdate between AME_RULES.START_DATE and
221: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
222: (sysdate < AME_RULES.START_DATE and
223: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
224: AME_RULES.START_DATE + (1/86400))));
225: end if;
218: sysdate between AME_ACTIONS.START_DATE and
219: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
220: ((sysdate between AME_RULES.START_DATE and
221: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
222: (sysdate < AME_RULES.START_DATE and
223: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
224: AME_RULES.START_DATE + (1/86400))));
225: end if;
226: if(TEMP_COUNT > 0) then
219: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
220: ((sysdate between AME_RULES.START_DATE and
221: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
222: (sysdate < AME_RULES.START_DATE and
223: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
224: AME_RULES.START_DATE + (1/86400))));
225: end if;
226: if(TEMP_COUNT > 0) then
227: NEW_USE_COUNT := NEW_USE_COUNT + 1;
220: ((sysdate between AME_RULES.START_DATE and
221: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
222: (sysdate < AME_RULES.START_DATE and
223: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
224: AME_RULES.START_DATE + (1/86400))));
225: end if;
226: if(TEMP_COUNT > 0) then
227: NEW_USE_COUNT := NEW_USE_COUNT + 1;
228: end if;
277: (AME_ACTIONS.END_DATE is null or sysdate < AME_ACTIONS.END_DATE))
278: union
279: select AME_MANDATORY_ATTRIBUTES.ATTRIBUTE_ID
280: from AME_MANDATORY_ATTRIBUTES,
281: AME_RULES,
282: AME_ACTIONS
283: where
284: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
285: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
281: AME_RULES,
282: AME_ACTIONS
283: where
284: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
285: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
286: AME_RULES.ACTION_ID is not null and
287: AME_RULES.RULE_ID = X_RULE_ID and
288: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
289: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
282: AME_ACTIONS
283: where
284: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
285: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
286: AME_RULES.ACTION_ID is not null and
287: AME_RULES.RULE_ID = X_RULE_ID and
288: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
289: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
290: ((sysdate between AME_RULES.START_DATE and
283: where
284: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
285: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
286: AME_RULES.ACTION_ID is not null and
287: AME_RULES.RULE_ID = X_RULE_ID and
288: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
289: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
290: ((sysdate between AME_RULES.START_DATE and
291: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
286: AME_RULES.ACTION_ID is not null and
287: AME_RULES.RULE_ID = X_RULE_ID and
288: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
289: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
290: ((sysdate between AME_RULES.START_DATE and
291: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
292: (sysdate < AME_RULES.START_DATE and
293: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,AME_RULES.START_DATE
294: + (1/86400)))) and
287: AME_RULES.RULE_ID = X_RULE_ID and
288: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
289: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
290: ((sysdate between AME_RULES.START_DATE and
291: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
292: (sysdate < AME_RULES.START_DATE and
293: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,AME_RULES.START_DATE
294: + (1/86400)))) and
295: (AME_ACTIONS.START_DATE <= sysdate and
288: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
289: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
290: ((sysdate between AME_RULES.START_DATE and
291: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
292: (sysdate < AME_RULES.START_DATE and
293: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,AME_RULES.START_DATE
294: + (1/86400)))) and
295: (AME_ACTIONS.START_DATE <= sysdate and
296: (AME_ACTIONS.END_DATE is null or sysdate < AME_ACTIONS.END_DATE));
289: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
290: ((sysdate between AME_RULES.START_DATE and
291: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
292: (sysdate < AME_RULES.START_DATE and
293: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,AME_RULES.START_DATE
294: + (1/86400)))) and
295: (AME_ACTIONS.START_DATE <= sysdate and
296: (AME_ACTIONS.END_DATE is null or sysdate < AME_ACTIONS.END_DATE));
297: ATTRIBUTE_IDS_LIST ame_util.idList;
527: end if;
528: end if;
529: exception
530: when others then
531: ame_util.runtimeException('ame_rules_usages_api2',
532: 'load_row',
533: sqlcode,
534: sqlerrm);
535: raise;