67:
68: function CALCULATE_USE_COUNT(X_ATTRIBUTE_ID ame_attribute_usages.attribute_id%type,
69: X_APPLICATION_ID ame_attribute_usages.application_id%type) return integer as
70: cursor RULE_CURSOR(X_APPLICATION_ID in integer) is
71: select AME_RULE_USAGES.RULE_ID, AME_RULES.ACTION_ID
72: from AME_RULES, AME_RULE_USAGES
73: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
74: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
75: and ((sysdate between AME_RULES.START_DATE
68: function CALCULATE_USE_COUNT(X_ATTRIBUTE_ID ame_attribute_usages.attribute_id%type,
69: X_APPLICATION_ID ame_attribute_usages.application_id%type) return integer as
70: cursor RULE_CURSOR(X_APPLICATION_ID in integer) is
71: select AME_RULE_USAGES.RULE_ID, AME_RULES.ACTION_ID
72: from AME_RULES, AME_RULE_USAGES
73: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
74: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
75: and ((sysdate between AME_RULES.START_DATE
76: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
69: X_APPLICATION_ID ame_attribute_usages.application_id%type) return integer as
70: cursor RULE_CURSOR(X_APPLICATION_ID in integer) is
71: select AME_RULE_USAGES.RULE_ID, AME_RULES.ACTION_ID
72: from AME_RULES, AME_RULE_USAGES
73: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
74: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
75: and ((sysdate between AME_RULES.START_DATE
76: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
77: or (sysdate < AME_RULES.START_DATE
71: select AME_RULE_USAGES.RULE_ID, AME_RULES.ACTION_ID
72: from AME_RULES, AME_RULE_USAGES
73: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
74: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
75: and ((sysdate between AME_RULES.START_DATE
76: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
77: or (sysdate < AME_RULES.START_DATE
78: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
79: AME_RULES.START_DATE + (1/86400))))
72: from AME_RULES, AME_RULE_USAGES
73: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
74: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
75: and ((sysdate between AME_RULES.START_DATE
76: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
77: or (sysdate < AME_RULES.START_DATE
78: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
79: AME_RULES.START_DATE + (1/86400))))
80: and ((sysdate between AME_RULE_USAGES.START_DATE
73: where AME_RULES.RULE_ID = AME_RULE_USAGES.RULE_ID
74: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
75: and ((sysdate between AME_RULES.START_DATE
76: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
77: or (sysdate < AME_RULES.START_DATE
78: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
79: AME_RULES.START_DATE + (1/86400))))
80: and ((sysdate between AME_RULE_USAGES.START_DATE
81: and nvl(AME_RULE_USAGES.END_DATE - (1/86400), sysdate))
74: and AME_RULE_USAGES.ITEM_ID = X_APPLICATION_ID
75: and ((sysdate between AME_RULES.START_DATE
76: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
77: or (sysdate < AME_RULES.START_DATE
78: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
79: AME_RULES.START_DATE + (1/86400))))
80: and ((sysdate between AME_RULE_USAGES.START_DATE
81: and nvl(AME_RULE_USAGES.END_DATE - (1/86400), sysdate))
82: or (sysdate < AME_RULE_USAGES.START_DATE
75: and ((sysdate between AME_RULES.START_DATE
76: and nvl(AME_RULES.END_DATE - (1/86400), sysdate))
77: or (sysdate < AME_RULES.START_DATE
78: and AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
79: AME_RULES.START_DATE + (1/86400))))
80: and ((sysdate between AME_RULE_USAGES.START_DATE
81: and nvl(AME_RULE_USAGES.END_DATE - (1/86400), sysdate))
82: or (sysdate < AME_RULE_USAGES.START_DATE
83: and AME_RULE_USAGES.START_DATE < nvl(AME_RULE_USAGES.END_DATE,
106: if(TEMP_COUNT > 0) then
107: NEW_USE_COUNT := NEW_USE_COUNT + 1;
108: else
109: if(TEMPRULE.ACTION_ID is null) then
110: -- action_id is already migrated from ame_rules to ame_action_usages
111: select count(*)
112: into TEMP_COUNT
113: from
114: AME_MANDATORY_ATTRIBUTES,
133: into TEMP_COUNT
134: from
135: AME_MANDATORY_ATTRIBUTES,
136: AME_ACTIONS,
137: AME_RULES
138: where
139: AME_MANDATORY_ATTRIBUTES.ATTRIBUTE_ID = X_ATTRIBUTE_ID and
140: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
141: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
137: AME_RULES
138: where
139: AME_MANDATORY_ATTRIBUTES.ATTRIBUTE_ID = X_ATTRIBUTE_ID and
140: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
141: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
142: AME_RULES.RULE_ID = TEMPRULE.RULE_ID and
143: sysdate between AME_MANDATORY_ATTRIBUTES.START_DATE and
144: nvl(AME_MANDATORY_ATTRIBUTES.END_DATE - (1/86400), sysdate) and
145: sysdate between AME_ACTIONS.START_DATE and
138: where
139: AME_MANDATORY_ATTRIBUTES.ATTRIBUTE_ID = X_ATTRIBUTE_ID and
140: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
141: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
142: AME_RULES.RULE_ID = TEMPRULE.RULE_ID and
143: sysdate between AME_MANDATORY_ATTRIBUTES.START_DATE and
144: nvl(AME_MANDATORY_ATTRIBUTES.END_DATE - (1/86400), sysdate) and
145: sysdate between AME_ACTIONS.START_DATE and
146: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
143: sysdate between AME_MANDATORY_ATTRIBUTES.START_DATE and
144: nvl(AME_MANDATORY_ATTRIBUTES.END_DATE - (1/86400), sysdate) and
145: sysdate between AME_ACTIONS.START_DATE and
146: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
147: ((sysdate between AME_RULES.START_DATE and
148: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
149: (sysdate < AME_RULES.START_DATE and
150: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
151: AME_RULES.START_DATE + (1/86400))));
144: nvl(AME_MANDATORY_ATTRIBUTES.END_DATE - (1/86400), sysdate) and
145: sysdate between AME_ACTIONS.START_DATE and
146: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
147: ((sysdate between AME_RULES.START_DATE and
148: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
149: (sysdate < AME_RULES.START_DATE and
150: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
151: AME_RULES.START_DATE + (1/86400))));
152: end if;
145: sysdate between AME_ACTIONS.START_DATE and
146: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
147: ((sysdate between AME_RULES.START_DATE and
148: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
149: (sysdate < AME_RULES.START_DATE and
150: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
151: AME_RULES.START_DATE + (1/86400))));
152: end if;
153: if(TEMP_COUNT > 0) then
146: nvl(AME_ACTIONS.END_DATE - (1/86400), sysdate) and
147: ((sysdate between AME_RULES.START_DATE and
148: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
149: (sysdate < AME_RULES.START_DATE and
150: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
151: AME_RULES.START_DATE + (1/86400))));
152: end if;
153: if(TEMP_COUNT > 0) then
154: NEW_USE_COUNT := NEW_USE_COUNT + 1;
147: ((sysdate between AME_RULES.START_DATE and
148: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
149: (sysdate < AME_RULES.START_DATE and
150: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,
151: AME_RULES.START_DATE + (1/86400))));
152: end if;
153: if(TEMP_COUNT > 0) then
154: NEW_USE_COUNT := NEW_USE_COUNT + 1;
155: end if;
204: (AME_ACTIONS.END_DATE is null or sysdate < AME_ACTIONS.END_DATE))
205: union
206: select AME_MANDATORY_ATTRIBUTES.ATTRIBUTE_ID
207: from AME_MANDATORY_ATTRIBUTES,
208: AME_RULES,
209: AME_ACTIONS
210: where
211: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
212: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
208: AME_RULES,
209: AME_ACTIONS
210: where
211: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
212: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
213: AME_RULES.ACTION_ID is not null and
214: AME_RULES.RULE_ID = X_RULE_ID and
215: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
216: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
209: AME_ACTIONS
210: where
211: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
212: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
213: AME_RULES.ACTION_ID is not null and
214: AME_RULES.RULE_ID = X_RULE_ID and
215: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
216: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
217: ((sysdate between AME_RULES.START_DATE and
210: where
211: AME_MANDATORY_ATTRIBUTES.ACTION_TYPE_ID = AME_ACTIONS.ACTION_TYPE_ID and
212: AME_ACTIONS.ACTION_ID = AME_RULES.ACTION_ID and
213: AME_RULES.ACTION_ID is not null and
214: AME_RULES.RULE_ID = X_RULE_ID and
215: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
216: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
217: ((sysdate between AME_RULES.START_DATE and
218: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
213: AME_RULES.ACTION_ID is not null and
214: AME_RULES.RULE_ID = X_RULE_ID and
215: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
216: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
217: ((sysdate between AME_RULES.START_DATE and
218: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
219: (sysdate < AME_RULES.START_DATE and
220: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,AME_RULES.START_DATE
221: + (1/86400)))) and
214: AME_RULES.RULE_ID = X_RULE_ID and
215: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
216: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
217: ((sysdate between AME_RULES.START_DATE and
218: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
219: (sysdate < AME_RULES.START_DATE and
220: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,AME_RULES.START_DATE
221: + (1/86400)))) and
222: (AME_ACTIONS.START_DATE <= sysdate and
215: (AME_MANDATORY_ATTRIBUTES.START_DATE <= sysdate and
216: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
217: ((sysdate between AME_RULES.START_DATE and
218: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
219: (sysdate < AME_RULES.START_DATE and
220: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,AME_RULES.START_DATE
221: + (1/86400)))) and
222: (AME_ACTIONS.START_DATE <= sysdate and
223: (AME_ACTIONS.END_DATE is null or sysdate < AME_ACTIONS.END_DATE));
216: (AME_MANDATORY_ATTRIBUTES.END_DATE is null or sysdate < AME_MANDATORY_ATTRIBUTES.END_DATE)) and
217: ((sysdate between AME_RULES.START_DATE and
218: nvl(AME_RULES.END_DATE - (1/86400), sysdate)) or
219: (sysdate < AME_RULES.START_DATE and
220: AME_RULES.START_DATE < nvl(AME_RULES.END_DATE,AME_RULES.START_DATE
221: + (1/86400)))) and
222: (AME_ACTIONS.START_DATE <= sysdate and
223: (AME_ACTIONS.END_DATE is null or sysdate < AME_ACTIONS.END_DATE));
224: ATTRIBUTE_IDS_LIST ame_util.idList;
418: ,x_application_id => x_item_id);
419: end if;
420: exception
421: when others then
422: ame_util.runtimeException('ame_rules_usages_api',
423: 'load_row',
424: sqlcode,
425: sqlerrm);
426: raise;