182: TYPE char_tab IS TABLE OF VARCHAR2(150) INDEX BY BINARY_INTEGER;
183: TYPE rowid_tab IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
184:
185: l_rowid varchar2(30);
186: l_rowid_tbl dbms_sql.varchar2_table;
187: l_upd_rowid char_tab;
188:
189: -- bulk operations
190: i number;
222: end if;
223:
224: l_batch_size := nvl(fa_cache_pkg.fa_batch_size, 200);
225:
226: l_cursor_id := dbms_sql.open_cursor;
227:
228: l_sql_statement := 'select row_id ' ||
229: ' from fa_mass_additions_v ' ||
230: p_where_clause ||
230: p_where_clause ||
231: ' and posting_status not in (''POSTED'', ''MERGED'', ''SPLIT''
232: )';
233:
234: dbms_sql.parse(l_cursor_id, l_sql_statement, DBMS_SQL.NATIVE);
235: dbms_sql.define_array(l_cursor_id, 1, l_rowid_tbl, l_batch_size, 1);
236:
237: l_ret_val := DBMS_SQL.EXECUTE(l_cursor_id);
238:
231: ' and posting_status not in (''POSTED'', ''MERGED'', ''SPLIT''
232: )';
233:
234: dbms_sql.parse(l_cursor_id, l_sql_statement, DBMS_SQL.NATIVE);
235: dbms_sql.define_array(l_cursor_id, 1, l_rowid_tbl, l_batch_size, 1);
236:
237: l_ret_val := DBMS_SQL.EXECUTE(l_cursor_id);
238:
239: loop
233:
234: dbms_sql.parse(l_cursor_id, l_sql_statement, DBMS_SQL.NATIVE);
235: dbms_sql.define_array(l_cursor_id, 1, l_rowid_tbl, l_batch_size, 1);
236:
237: l_ret_val := DBMS_SQL.EXECUTE(l_cursor_id);
238:
239: loop
240:
241: -- reset the array to 1
238:
239: loop
240:
241: -- reset the array to 1
242: dbms_sql.define_array(l_cursor_id, 1, l_rowid_tbl, l_batch_size, 1);
243:
244: l_num_rows := dbms_sql.fetch_rows(l_cursor_id);
245: dbms_sql.column_value(l_cursor_id, 1, l_rowid_tbl);
246:
240:
241: -- reset the array to 1
242: dbms_sql.define_array(l_cursor_id, 1, l_rowid_tbl, l_batch_size, 1);
243:
244: l_num_rows := dbms_sql.fetch_rows(l_cursor_id);
245: dbms_sql.column_value(l_cursor_id, 1, l_rowid_tbl);
246:
247: if (l_num_rows = 0) then
248: exit;
241: -- reset the array to 1
242: dbms_sql.define_array(l_cursor_id, 1, l_rowid_tbl, l_batch_size, 1);
243:
244: l_num_rows := dbms_sql.fetch_rows(l_cursor_id);
245: dbms_sql.column_value(l_cursor_id, 1, l_rowid_tbl);
246:
247: if (l_num_rows = 0) then
248: exit;
249: end if;
325: exit when l_num_rows < l_batch_size;
326:
327: end loop;
328:
329: DBMS_SQL.CLOSE_CURSOR(l_cursor_id);
330: commit;
331:
332: -- returning success here even though individual lines may have failed.
333: if (x_failure_count = 0) then