104:
105: --
106: -- This procedure fills in the name for a value ID in a particular
107: -- dimension hierarchy. This data is now held denormalized in the
108: -- CN_HIERARCHY_NODES translation table, making obselete our previous
109: -- (slow) method of searching through the base source tables for the
110: -- dimension.
111: --
112:
111: --
112:
113: IF X_value_id IS NOT NULL THEN
114:
115: SELECT name INTO X_name FROM cn_hierarchy_nodes
116: WHERE dim_hierarchy_id = X_dim_hierarchy_id
117: AND value_id = X_value_id;
118:
119: END IF;
148: 'VARCHAR2', col.name,
149: 'to_char('||col.name||')')||
150: ' NAME, -'||pk.name||
151: ' VALUE_ID FROM '||tab.name||' MINUS '||
152: 'SELECT name NAME, -external_id VALUE_ID FROM cn_hierarchy_nodes '||
153: 'WHERE dim_hierarchy_id = :periods.dim_hierarchy_id '||
154: ') UNION '||
155: 'SELECT name NAME, value_id VALUE_ID FROM cn_hierarchy_nodes '||
156: 'WHERE dim_hierarchy_id = :periods.dim_hierarchy_id '||
151: ' VALUE_ID FROM '||tab.name||' MINUS '||
152: 'SELECT name NAME, -external_id VALUE_ID FROM cn_hierarchy_nodes '||
153: 'WHERE dim_hierarchy_id = :periods.dim_hierarchy_id '||
154: ') UNION '||
155: 'SELECT name NAME, value_id VALUE_ID FROM cn_hierarchy_nodes '||
156: 'WHERE dim_hierarchy_id = :periods.dim_hierarchy_id '||
157: 'ORDER BY 1'
158: INTO X_select_clause
159: FROM cn_obj_tables_v tab,
235: X_value_id := NULL;
236:
237: WHEN NO_DATA_FOUND THEN
238:
239: -- X_value_id := cn_hierarchy_nodes_s.nextval;
240:
241: SELECT cn_hierarchy_nodes_s.nextval INTO X_value_id FROM dual;
242:
243: INSERT INTO cn_hierarchy_nodes (dim_hierarchy_id, value_id, name)
237: WHEN NO_DATA_FOUND THEN
238:
239: -- X_value_id := cn_hierarchy_nodes_s.nextval;
240:
241: SELECT cn_hierarchy_nodes_s.nextval INTO X_value_id FROM dual;
242:
243: INSERT INTO cn_hierarchy_nodes (dim_hierarchy_id, value_id, name)
244: VALUES (X_hierarchy_id, X_value_id, 'ALL');
245:
239: -- X_value_id := cn_hierarchy_nodes_s.nextval;
240:
241: SELECT cn_hierarchy_nodes_s.nextval INTO X_value_id FROM dual;
242:
243: INSERT INTO cn_hierarchy_nodes (dim_hierarchy_id, value_id, name)
244: VALUES (X_hierarchy_id, X_value_id, 'ALL');
245:
246: INSERT INTO cn_hierarchy_edges (dim_hierarchy_id, value_id)
247: VALUES (X_hierarchy_id, X_value_id);
264: -- This procedure creates a hierarchy node for the hierarchy value in
265: -- question, if one does not exist already.
266: --
267:
268: SELECT count(*) INTO Temp FROM cn_hierarchy_nodes
269: WHERE external_id = X_value_id
270: AND dim_hierarchy_id = X_dim_hierarchy_id;
271:
272: IF Temp = 0 THEN
270: AND dim_hierarchy_id = X_dim_hierarchy_id;
271:
272: IF Temp = 0 THEN
273:
274: INSERT INTO cn_hierarchy_nodes (value_id, external_id, name,
275: dim_hierarchy_id)
276: VALUES (cn_hierarchy_nodes_s.nextval,
277: X_value_id,
278: X_name,
272: IF Temp = 0 THEN
273:
274: INSERT INTO cn_hierarchy_nodes (value_id, external_id, name,
275: dim_hierarchy_id)
276: VALUES (cn_hierarchy_nodes_s.nextval,
277: X_value_id,
278: X_name,
279: X_dim_hierarchy_id);
280:
277: X_value_id,
278: X_name,
279: X_dim_hierarchy_id);
280:
281: -- X_value_id := cn_hierarchy_nodes_s.currval;
282:
283: SELECT cn_hierarchy_nodes_s.currval INTO X_value_id FROM dual;
284:
285: END IF;
279: X_dim_hierarchy_id);
280:
281: -- X_value_id := cn_hierarchy_nodes_s.currval;
282:
283: SELECT cn_hierarchy_nodes_s.currval INTO X_value_id FROM dual;
284:
285: END IF;
286:
287: END Synchronize_Node;
392: AND dim_hierarchy_id = X_dim_hierarchy_id;
393:
394: END IF;
395:
396: SELECT ref_count INTO X_refcount FROM cn_hierarchy_nodes
397: WHERE value_id = X_value_id
398: AND dim_hierarchy_id = X_dim_hierarchy_id;
399:
400: IF X_refcount = 0 THEN
495: X_name varchar2,
496: X_dim_hierarchy_id number) IS
497: BEGIN
498:
499: SELECT cn_hierarchy_nodes_s.nextval
500: INTO X_value_id
501: FROM dual;
502:
503: INSERT INTO cn_hierarchy_nodes
499: SELECT cn_hierarchy_nodes_s.nextval
500: INTO X_value_id
501: FROM dual;
502:
503: INSERT INTO cn_hierarchy_nodes
504: (dim_hierarchy_id, name, value_id)
505: VALUES (X_dim_hierarchy_id, X_name, X_value_id);
506:
507: END Create_Dummy_Node;