187: FUNCTION get_descendants(
188: p_plan_id NUMBER,
189: p_collection_id NUMBER,
190: p_occurrence NUMBER,
191: x_plan_ids OUT NOCOPY dbms_sql.number_table,
192: x_collection_ids OUT NOCOPY dbms_sql.number_table,
193: x_occurrences OUT NOCOPY dbms_sql.number_table) RETURN VARCHAR2 IS
194:
195: ---
188: p_plan_id NUMBER,
189: p_collection_id NUMBER,
190: p_occurrence NUMBER,
191: x_plan_ids OUT NOCOPY dbms_sql.number_table,
192: x_collection_ids OUT NOCOPY dbms_sql.number_table,
193: x_occurrences OUT NOCOPY dbms_sql.number_table) RETURN VARCHAR2 IS
194:
195: ---
196: --- Given a parent record (plan/collection/occurrence), this procedure finds all the child and
189: p_collection_id NUMBER,
190: p_occurrence NUMBER,
191: x_plan_ids OUT NOCOPY dbms_sql.number_table,
192: x_collection_ids OUT NOCOPY dbms_sql.number_table,
193: x_occurrences OUT NOCOPY dbms_sql.number_table) RETURN VARCHAR2 IS
194:
195: ---
196: --- Given a parent record (plan/collection/occurrence), this procedure finds all the child and
197: --- grandchildren records (therefore, descendants) of the record. These are returned in the
1012: FUNCTION get_disabled_descendants(p_plan_id NUMBER,
1013: p_collection_id NUMBER,
1014: p_occurrence NUMBER,
1015: --p_enabled NUMBER,
1016: x_plan_ids OUT NOCOPY dbms_sql.number_table,
1017: x_collection_ids OUT NOCOPY dbms_sql.number_table,
1018: x_occurrences OUT NOCOPY dbms_sql.number_table)
1019: RETURN VARCHAR2 IS
1020: ---
1013: p_collection_id NUMBER,
1014: p_occurrence NUMBER,
1015: --p_enabled NUMBER,
1016: x_plan_ids OUT NOCOPY dbms_sql.number_table,
1017: x_collection_ids OUT NOCOPY dbms_sql.number_table,
1018: x_occurrences OUT NOCOPY dbms_sql.number_table)
1019: RETURN VARCHAR2 IS
1020: ---
1021: --- This function is similar to get_descendants above with one difference
1014: p_occurrence NUMBER,
1015: --p_enabled NUMBER,
1016: x_plan_ids OUT NOCOPY dbms_sql.number_table,
1017: x_collection_ids OUT NOCOPY dbms_sql.number_table,
1018: x_occurrences OUT NOCOPY dbms_sql.number_table)
1019: RETURN VARCHAR2 IS
1020: ---
1021: --- This function is similar to get_descendants above with one difference
1022: --- it looks for all disabled records .
1052: END IF;
1053:
1054: END;
1055:
1056: PROCEDURE delete_child_rows(p_plan_ids IN dbms_sql.number_table,
1057: p_collection_ids IN dbms_sql.number_table,
1058: p_occurrences IN dbms_sql.number_table,
1059: p_parent_plan_id NUMBER ,
1060: p_parent_collection_id NUMBER ,
1053:
1054: END;
1055:
1056: PROCEDURE delete_child_rows(p_plan_ids IN dbms_sql.number_table,
1057: p_collection_ids IN dbms_sql.number_table,
1058: p_occurrences IN dbms_sql.number_table,
1059: p_parent_plan_id NUMBER ,
1060: p_parent_collection_id NUMBER ,
1061: p_parent_occurrence NUMBER ,
1054: END;
1055:
1056: PROCEDURE delete_child_rows(p_plan_ids IN dbms_sql.number_table,
1057: p_collection_ids IN dbms_sql.number_table,
1058: p_occurrences IN dbms_sql.number_table,
1059: p_parent_plan_id NUMBER ,
1060: p_parent_collection_id NUMBER ,
1061: p_parent_occurrence NUMBER ,
1062: p_enabled_flag VARCHAR2)
1323: -- x_parent_collection_id, x_parent_occurrence;
1324: -- CLOSE res_cur;
1325:
1326:
1327: cursor_handle := dbms_sql.open_cursor;
1328: fnd_dsql.set_cursor(cursor_handle);
1329:
1330: query_clause := fnd_dsql.get_text;
1331: dbms_sql.parse(cursor_handle,query_clause,dbms_sql.NATIVE);
1327: cursor_handle := dbms_sql.open_cursor;
1328: fnd_dsql.set_cursor(cursor_handle);
1329:
1330: query_clause := fnd_dsql.get_text;
1331: dbms_sql.parse(cursor_handle,query_clause,dbms_sql.NATIVE);
1332: fnd_dsql.do_binds;
1333:
1334: dbms_sql.define_column(cursor_handle,1,l_temp_var);
1335: dbms_sql.define_column(cursor_handle,2,x_parent_plan_id);
1330: query_clause := fnd_dsql.get_text;
1331: dbms_sql.parse(cursor_handle,query_clause,dbms_sql.NATIVE);
1332: fnd_dsql.do_binds;
1333:
1334: dbms_sql.define_column(cursor_handle,1,l_temp_var);
1335: dbms_sql.define_column(cursor_handle,2,x_parent_plan_id);
1336: dbms_sql.define_column(cursor_handle,3,x_parent_collection_id);
1337: dbms_sql.define_column(cursor_handle,4,x_parent_occurrence);
1338:
1331: dbms_sql.parse(cursor_handle,query_clause,dbms_sql.NATIVE);
1332: fnd_dsql.do_binds;
1333:
1334: dbms_sql.define_column(cursor_handle,1,l_temp_var);
1335: dbms_sql.define_column(cursor_handle,2,x_parent_plan_id);
1336: dbms_sql.define_column(cursor_handle,3,x_parent_collection_id);
1337: dbms_sql.define_column(cursor_handle,4,x_parent_occurrence);
1338:
1339: no_of_rows := dbms_sql.execute(cursor_handle);
1332: fnd_dsql.do_binds;
1333:
1334: dbms_sql.define_column(cursor_handle,1,l_temp_var);
1335: dbms_sql.define_column(cursor_handle,2,x_parent_plan_id);
1336: dbms_sql.define_column(cursor_handle,3,x_parent_collection_id);
1337: dbms_sql.define_column(cursor_handle,4,x_parent_occurrence);
1338:
1339: no_of_rows := dbms_sql.execute(cursor_handle);
1340:
1333:
1334: dbms_sql.define_column(cursor_handle,1,l_temp_var);
1335: dbms_sql.define_column(cursor_handle,2,x_parent_plan_id);
1336: dbms_sql.define_column(cursor_handle,3,x_parent_collection_id);
1337: dbms_sql.define_column(cursor_handle,4,x_parent_occurrence);
1338:
1339: no_of_rows := dbms_sql.execute(cursor_handle);
1340:
1341: no_of_rows := dbms_sql.fetch_rows(cursor_handle);
1335: dbms_sql.define_column(cursor_handle,2,x_parent_plan_id);
1336: dbms_sql.define_column(cursor_handle,3,x_parent_collection_id);
1337: dbms_sql.define_column(cursor_handle,4,x_parent_occurrence);
1338:
1339: no_of_rows := dbms_sql.execute(cursor_handle);
1340:
1341: no_of_rows := dbms_sql.fetch_rows(cursor_handle);
1342:
1343: l_temp_var := 0;
1337: dbms_sql.define_column(cursor_handle,4,x_parent_occurrence);
1338:
1339: no_of_rows := dbms_sql.execute(cursor_handle);
1340:
1341: no_of_rows := dbms_sql.fetch_rows(cursor_handle);
1342:
1343: l_temp_var := 0;
1344: IF (no_of_rows > 0) THEN
1345: dbms_sql.column_value(cursor_handle,1,l_temp_var);
1341: no_of_rows := dbms_sql.fetch_rows(cursor_handle);
1342:
1343: l_temp_var := 0;
1344: IF (no_of_rows > 0) THEN
1345: dbms_sql.column_value(cursor_handle,1,l_temp_var);
1346: dbms_sql.column_value(cursor_handle,2,x_parent_plan_id);
1347: dbms_sql.column_value(cursor_handle,3,x_parent_collection_id);
1348: dbms_sql.column_value(cursor_handle,4,x_parent_occurrence);
1349:
1342:
1343: l_temp_var := 0;
1344: IF (no_of_rows > 0) THEN
1345: dbms_sql.column_value(cursor_handle,1,l_temp_var);
1346: dbms_sql.column_value(cursor_handle,2,x_parent_plan_id);
1347: dbms_sql.column_value(cursor_handle,3,x_parent_collection_id);
1348: dbms_sql.column_value(cursor_handle,4,x_parent_occurrence);
1349:
1350:
1343: l_temp_var := 0;
1344: IF (no_of_rows > 0) THEN
1345: dbms_sql.column_value(cursor_handle,1,l_temp_var);
1346: dbms_sql.column_value(cursor_handle,2,x_parent_plan_id);
1347: dbms_sql.column_value(cursor_handle,3,x_parent_collection_id);
1348: dbms_sql.column_value(cursor_handle,4,x_parent_occurrence);
1349:
1350:
1351: END IF;
1344: IF (no_of_rows > 0) THEN
1345: dbms_sql.column_value(cursor_handle,1,l_temp_var);
1346: dbms_sql.column_value(cursor_handle,2,x_parent_plan_id);
1347: dbms_sql.column_value(cursor_handle,3,x_parent_collection_id);
1348: dbms_sql.column_value(cursor_handle,4,x_parent_occurrence);
1349:
1350:
1351: END IF;
1352:
1349:
1350:
1351: END IF;
1352:
1353: dbms_sql.close_cursor(cursor_handle);
1354:
1355: IF (l_temp_var = 1) THEN
1356: RETURN 'T';
1357: ELSE
2209: -- scenarios.
2210:
2211: -- Bug 2976810. Instead of the literal value concatenation and execution using
2212: -- EXECUTE IMMEDIATE, we'll pack these values into an array, bind them and
2213: -- and execute using DBMS_SQL.execute. kabalakr
2214:
2215: -- l_update_clause := l_update_clause || cur_rec.child_database_column ||
2216: -- ' = ' || ''''||qa_core_pkg.dequote(l_value) ||'''';
2217:
2273: || ' AND occurrence= :p_child_occurrence';
2274:
2275: BEGIN
2276:
2277: c1 := dbms_sql.open_cursor;
2278: dbms_sql.parse(c1, l_update_clause, dbms_sql.native);
2279:
2280: l_var := l_bind_var.FIRST;
2281:
2274:
2275: BEGIN
2276:
2277: c1 := dbms_sql.open_cursor;
2278: dbms_sql.parse(c1, l_update_clause, dbms_sql.native);
2279:
2280: l_var := l_bind_var.FIRST;
2281:
2282: WHILE (l_var IS NOT NULL) LOOP
2287: -- will have 2 fields and we are interested
2288: -- only in the value field.
2289: -- skolluku Sun Oct 14 03:26:31 PDT 2007
2290: --
2291: -- dbms_sql.bind_variable(c1, ':' || to_char(l_var), l_bind_var(l_var));
2292: dbms_sql.bind_variable(c1, ':' || to_char(l_var), l_bind_var(l_var).value);
2293: l_var := l_bind_var.NEXT(l_var);
2294: END LOOP;
2295:
2288: -- only in the value field.
2289: -- skolluku Sun Oct 14 03:26:31 PDT 2007
2290: --
2291: -- dbms_sql.bind_variable(c1, ':' || to_char(l_var), l_bind_var(l_var));
2292: dbms_sql.bind_variable(c1, ':' || to_char(l_var), l_bind_var(l_var).value);
2293: l_var := l_bind_var.NEXT(l_var);
2294: END LOOP;
2295:
2296: dbms_sql.bind_variable(c1, ':p_child_plan_id', p_child_plan_id);
2292: dbms_sql.bind_variable(c1, ':' || to_char(l_var), l_bind_var(l_var).value);
2293: l_var := l_bind_var.NEXT(l_var);
2294: END LOOP;
2295:
2296: dbms_sql.bind_variable(c1, ':p_child_plan_id', p_child_plan_id);
2297: dbms_sql.bind_variable(c1, ':p_child_collection_id', p_child_collection_id);
2298: dbms_sql.bind_variable(c1, ':p_child_occurrence', p_child_occurrence);
2299:
2300: ignore := dbms_sql.execute(c1);
2293: l_var := l_bind_var.NEXT(l_var);
2294: END LOOP;
2295:
2296: dbms_sql.bind_variable(c1, ':p_child_plan_id', p_child_plan_id);
2297: dbms_sql.bind_variable(c1, ':p_child_collection_id', p_child_collection_id);
2298: dbms_sql.bind_variable(c1, ':p_child_occurrence', p_child_occurrence);
2299:
2300: ignore := dbms_sql.execute(c1);
2301:
2294: END LOOP;
2295:
2296: dbms_sql.bind_variable(c1, ':p_child_plan_id', p_child_plan_id);
2297: dbms_sql.bind_variable(c1, ':p_child_collection_id', p_child_collection_id);
2298: dbms_sql.bind_variable(c1, ':p_child_occurrence', p_child_occurrence);
2299:
2300: ignore := dbms_sql.execute(c1);
2301:
2302: --bug# 5510747 shkalyan. Added close cursor
2296: dbms_sql.bind_variable(c1, ':p_child_plan_id', p_child_plan_id);
2297: dbms_sql.bind_variable(c1, ':p_child_collection_id', p_child_collection_id);
2298: dbms_sql.bind_variable(c1, ':p_child_occurrence', p_child_occurrence);
2299:
2300: ignore := dbms_sql.execute(c1);
2301:
2302: --bug# 5510747 shkalyan. Added close cursor
2303: dbms_sql.close_cursor(c1);
2304:
2299:
2300: ignore := dbms_sql.execute(c1);
2301:
2302: --bug# 5510747 shkalyan. Added close cursor
2303: dbms_sql.close_cursor(c1);
2304:
2305: EXCEPTION
2306: WHEN OTHERS THEN
2307: --
2309: -- The cursor c1 was not being closed in case of error during processing the records. Doing
2310: -- that now.
2311: -- ntungare Sun Oct 16 21:38:29 PDT 2005
2312: --
2313: IF dbms_sql.is_open(c1)
2314: THEN
2315: dbms_sql.close_cursor(c1);
2316: END IF;
2317: RETURN 'F';
2311: -- ntungare Sun Oct 16 21:38:29 PDT 2005
2312: --
2313: IF dbms_sql.is_open(c1)
2314: THEN
2315: dbms_sql.close_cursor(c1);
2316: END IF;
2317: RETURN 'F';
2318: END;
2319: Return 'T';
3858: qprc.element_relationship_type = 1 and
3859: parent_enabled_flag = 1 and
3860: child_enabled_flag = 1;
3861:
3862: p_rc DBMS_SQL.VARCHAR2_TABLE;
3863: c_rc DBMS_SQL.VARCHAR2_TABLE;
3864:
3865:
3866: BEGIN
3859: parent_enabled_flag = 1 and
3860: child_enabled_flag = 1;
3861:
3862: p_rc DBMS_SQL.VARCHAR2_TABLE;
3863: c_rc DBMS_SQL.VARCHAR2_TABLE;
3864:
3865:
3866: BEGIN
3867:
4116: -- for a given child plan and does not retrun child itself.
4117: FUNCTION get_ancestors( p_child_plan_id IN NUMBER,
4118: p_child_occurrence IN NUMBER,
4119: p_child_collection_id IN NUMBER,
4120: x_parent_plan_ids OUT NOCOPY dbms_sql.number_table,
4121: x_parent_collection_ids OUT NOCOPY dbms_sql.number_table,
4122: x_parent_occurrences OUT NOCOPY dbms_sql.number_table)
4123: RETURN VARCHAR2
4124: IS
4117: FUNCTION get_ancestors( p_child_plan_id IN NUMBER,
4118: p_child_occurrence IN NUMBER,
4119: p_child_collection_id IN NUMBER,
4120: x_parent_plan_ids OUT NOCOPY dbms_sql.number_table,
4121: x_parent_collection_ids OUT NOCOPY dbms_sql.number_table,
4122: x_parent_occurrences OUT NOCOPY dbms_sql.number_table)
4123: RETURN VARCHAR2
4124: IS
4125:
4118: p_child_occurrence IN NUMBER,
4119: p_child_collection_id IN NUMBER,
4120: x_parent_plan_ids OUT NOCOPY dbms_sql.number_table,
4121: x_parent_collection_ids OUT NOCOPY dbms_sql.number_table,
4122: x_parent_occurrences OUT NOCOPY dbms_sql.number_table)
4123: RETURN VARCHAR2
4124: IS
4125:
4126: BEGIN
4163: PROCEDURE update_all_ancestors(p_parent_plan_id IN NUMBER,
4164: p_parent_collection_id IN NUMBER,
4165: p_parent_occurrence IN NUMBER) IS
4166:
4167: l_parent_plan_id_tab DBMS_SQL.NUMBER_TABLE;
4168: l_parent_collection_id_tab DBMS_SQL.NUMBER_TABLE;
4169: l_parent_occurrence_tab DBMS_SQL.NUMBER_TABLE;
4170:
4171: l_current_child_planid NUMBER;
4164: p_parent_collection_id IN NUMBER,
4165: p_parent_occurrence IN NUMBER) IS
4166:
4167: l_parent_plan_id_tab DBMS_SQL.NUMBER_TABLE;
4168: l_parent_collection_id_tab DBMS_SQL.NUMBER_TABLE;
4169: l_parent_occurrence_tab DBMS_SQL.NUMBER_TABLE;
4170:
4171: l_current_child_planid NUMBER;
4172: l_current_child_collid NUMBER;
4165: p_parent_occurrence IN NUMBER) IS
4166:
4167: l_parent_plan_id_tab DBMS_SQL.NUMBER_TABLE;
4168: l_parent_collection_id_tab DBMS_SQL.NUMBER_TABLE;
4169: l_parent_occurrence_tab DBMS_SQL.NUMBER_TABLE;
4170:
4171: l_current_child_planid NUMBER;
4172: l_current_child_collid NUMBER;
4173: l_current_child_occrid NUMBER;