64:
65: BEGIN
66: BEGIN
67: main_query1 := 'SELECT count(*) from ' || source_view;
68: cursor_id := DBMS_SQL.open_cursor;
69: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
70: DBMS_SQL.Define_Column(cursor_id, 1, dummy);
71: exec_id := dbms_sql.execute(cursor_id);
72: DBMS_SQL.CLOSE_CURSOR(CURSOR_ID);
65: BEGIN
66: BEGIN
67: main_query1 := 'SELECT count(*) from ' || source_view;
68: cursor_id := DBMS_SQL.open_cursor;
69: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
70: DBMS_SQL.Define_Column(cursor_id, 1, dummy);
71: exec_id := dbms_sql.execute(cursor_id);
72: DBMS_SQL.CLOSE_CURSOR(CURSOR_ID);
73: EXCEPTION
66: BEGIN
67: main_query1 := 'SELECT count(*) from ' || source_view;
68: cursor_id := DBMS_SQL.open_cursor;
69: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
70: DBMS_SQL.Define_Column(cursor_id, 1, dummy);
71: exec_id := dbms_sql.execute(cursor_id);
72: DBMS_SQL.CLOSE_CURSOR(CURSOR_ID);
73: EXCEPTION
74: WHEN OTHERS THEN
67: main_query1 := 'SELECT count(*) from ' || source_view;
68: cursor_id := DBMS_SQL.open_cursor;
69: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
70: DBMS_SQL.Define_Column(cursor_id, 1, dummy);
71: exec_id := dbms_sql.execute(cursor_id);
72: DBMS_SQL.CLOSE_CURSOR(CURSOR_ID);
73: EXCEPTION
74: WHEN OTHERS THEN
75: IF DBMS_SQL.is_open(cursor_id) THEN
68: cursor_id := DBMS_SQL.open_cursor;
69: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
70: DBMS_SQL.Define_Column(cursor_id, 1, dummy);
71: exec_id := dbms_sql.execute(cursor_id);
72: DBMS_SQL.CLOSE_CURSOR(CURSOR_ID);
73: EXCEPTION
74: WHEN OTHERS THEN
75: IF DBMS_SQL.is_open(cursor_id) THEN
76: DBMS_SQL.close_cursor(cursor_id);
71: exec_id := dbms_sql.execute(cursor_id);
72: DBMS_SQL.CLOSE_CURSOR(CURSOR_ID);
73: EXCEPTION
74: WHEN OTHERS THEN
75: IF DBMS_SQL.is_open(cursor_id) THEN
76: DBMS_SQL.close_cursor(cursor_id);
77: END IF;
78: return (-1);
79: END;
72: DBMS_SQL.CLOSE_CURSOR(CURSOR_ID);
73: EXCEPTION
74: WHEN OTHERS THEN
75: IF DBMS_SQL.is_open(cursor_id) THEN
76: DBMS_SQL.close_cursor(cursor_id);
77: END IF;
78: return (-1);
79: END;
80:
200: --
201: -- Execute the dynamic SQL statement and prepare the forecast values into
202: -- amount_table, which will be returned to the local database
203: --
204: cursor_id := DBMS_SQL.open_cursor;
205:
206: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
207:
208: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
202: -- amount_table, which will be returned to the local database
203: --
204: cursor_id := DBMS_SQL.open_cursor;
205:
206: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
207:
208: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
209: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
210: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
204: cursor_id := DBMS_SQL.open_cursor;
205:
206: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
207:
208: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
209: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
210: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
211: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
212: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
205:
206: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
207:
208: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
209: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
210: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
211: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
212: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
213: DBMS_SQL.Define_Column(cursor_id, 6, bank_account_id);
206: DBMS_SQL.Parse(cursor_id, main_query1, DBMS_SQL.v7);
207:
208: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
209: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
210: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
211: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
212: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
213: DBMS_SQL.Define_Column(cursor_id, 6, bank_account_id);
214:
207:
208: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
209: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
210: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
211: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
212: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
213: DBMS_SQL.Define_Column(cursor_id, 6, bank_account_id);
214:
215: exec_id := dbms_sql.execute(cursor_id);
208: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
209: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
210: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
211: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
212: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
213: DBMS_SQL.Define_Column(cursor_id, 6, bank_account_id);
214:
215: exec_id := dbms_sql.execute(cursor_id);
216: i := 0;
209: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
210: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
211: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
212: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
213: DBMS_SQL.Define_Column(cursor_id, 6, bank_account_id);
214:
215: exec_id := dbms_sql.execute(cursor_id);
216: i := 0;
217: LOOP
211: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
212: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
213: DBMS_SQL.Define_Column(cursor_id, 6, bank_account_id);
214:
215: exec_id := dbms_sql.execute(cursor_id);
216: i := 0;
217: LOOP
218: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
219: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
214:
215: exec_id := dbms_sql.execute(cursor_id);
216: i := 0;
217: LOOP
218: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
219: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
220: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
221: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
222: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
215: exec_id := dbms_sql.execute(cursor_id);
216: i := 0;
217: LOOP
218: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
219: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
220: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
221: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
222: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
223: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
216: i := 0;
217: LOOP
218: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
219: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
220: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
221: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
222: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
223: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
224: DBMS_SQL.COLUMN_VALUE(cursor_id, 6, bank_account_id);
217: LOOP
218: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
219: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
220: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
221: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
222: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
223: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
224: DBMS_SQL.COLUMN_VALUE(cursor_id, 6, bank_account_id);
225:
218: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
219: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
220: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
221: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
222: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
223: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
224: DBMS_SQL.COLUMN_VALUE(cursor_id, 6, bank_account_id);
225:
226: i := i + 1;
219: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
220: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
221: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
222: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
223: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
224: DBMS_SQL.COLUMN_VALUE(cursor_id, 6, bank_account_id);
225:
226: i := i + 1;
227: amount_table(i).forecast_column_id := forecast_column_id;
220: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
221: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
222: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
223: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
224: DBMS_SQL.COLUMN_VALUE(cursor_id, 6, bank_account_id);
225:
226: i := i + 1;
227: amount_table(i).forecast_column_id := forecast_column_id;
228: amount_table(i).forecast_amount := forecast_amount;
233: ELSE
234: EXIT;
235: END IF;
236: END LOOP;
237: DBMS_SQL.close_cursor(cursor_id);
238: EXCEPTION
239: WHEN OTHERS THEN
240: IF DBMS_SQL.is_open(cursor_id) THEN
241: DBMS_SQL.close_cursor(cursor_id);
236: END LOOP;
237: DBMS_SQL.close_cursor(cursor_id);
238: EXCEPTION
239: WHEN OTHERS THEN
240: IF DBMS_SQL.is_open(cursor_id) THEN
241: DBMS_SQL.close_cursor(cursor_id);
242: END IF;
243: cursor_id := DBMS_SQL.open_cursor;
244:
237: DBMS_SQL.close_cursor(cursor_id);
238: EXCEPTION
239: WHEN OTHERS THEN
240: IF DBMS_SQL.is_open(cursor_id) THEN
241: DBMS_SQL.close_cursor(cursor_id);
242: END IF;
243: cursor_id := DBMS_SQL.open_cursor;
244:
245: DBMS_SQL.Parse(cursor_id, main_query2, DBMS_SQL.v7);
239: WHEN OTHERS THEN
240: IF DBMS_SQL.is_open(cursor_id) THEN
241: DBMS_SQL.close_cursor(cursor_id);
242: END IF;
243: cursor_id := DBMS_SQL.open_cursor;
244:
245: DBMS_SQL.Parse(cursor_id, main_query2, DBMS_SQL.v7);
246:
247: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
241: DBMS_SQL.close_cursor(cursor_id);
242: END IF;
243: cursor_id := DBMS_SQL.open_cursor;
244:
245: DBMS_SQL.Parse(cursor_id, main_query2, DBMS_SQL.v7);
246:
247: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
248: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
249: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
243: cursor_id := DBMS_SQL.open_cursor;
244:
245: DBMS_SQL.Parse(cursor_id, main_query2, DBMS_SQL.v7);
246:
247: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
248: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
249: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
250: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
251: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
244:
245: DBMS_SQL.Parse(cursor_id, main_query2, DBMS_SQL.v7);
246:
247: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
248: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
249: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
250: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
251: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
252:
245: DBMS_SQL.Parse(cursor_id, main_query2, DBMS_SQL.v7);
246:
247: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
248: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
249: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
250: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
251: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
252:
253: exec_id := dbms_sql.execute(cursor_id);
246:
247: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
248: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
249: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
250: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
251: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
252:
253: exec_id := dbms_sql.execute(cursor_id);
254: i := 0;
247: DBMS_SQL.Define_Column(cursor_id, 1, forecast_column_id);
248: DBMS_SQL.Define_Column(cursor_id, 2, forecast_amount);
249: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
250: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
251: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
252:
253: exec_id := dbms_sql.execute(cursor_id);
254: i := 0;
255: LOOP
249: DBMS_SQL.Define_Column(cursor_id, 3, trx_amount);
250: DBMS_SQL.Define_Column(cursor_id, 4, currency_code,15);
251: DBMS_SQL.Define_Column(cursor_id, 5, trx_date);
252:
253: exec_id := dbms_sql.execute(cursor_id);
254: i := 0;
255: LOOP
256: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
257: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
252:
253: exec_id := dbms_sql.execute(cursor_id);
254: i := 0;
255: LOOP
256: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
257: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
258: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
259: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
260: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
253: exec_id := dbms_sql.execute(cursor_id);
254: i := 0;
255: LOOP
256: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
257: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
258: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
259: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
260: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
261: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
254: i := 0;
255: LOOP
256: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
257: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
258: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
259: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
260: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
261: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
262:
255: LOOP
256: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
257: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
258: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
259: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
260: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
261: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
262:
263: i := i + 1;
256: IF (DBMS_SQL.FETCH_ROWS(cursor_id) >0 ) THEN
257: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
258: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
259: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
260: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
261: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
262:
263: i := i + 1;
264: amount_table(i).forecast_column_id := forecast_column_id;
257: DBMS_SQL.COLUMN_VALUE(cursor_id, 1, forecast_column_id);
258: DBMS_SQL.COLUMN_VALUE(cursor_id, 2, forecast_amount);
259: DBMS_SQL.COLUMN_VALUE(cursor_id, 3, trx_amount);
260: DBMS_SQL.COLUMN_VALUE(cursor_id, 4, currency_code);
261: DBMS_SQL.COLUMN_VALUE(cursor_id, 5, trx_date);
262:
263: i := i + 1;
264: amount_table(i).forecast_column_id := forecast_column_id;
265: amount_table(i).forecast_amount := forecast_amount;
270: ELSE
271: EXIT;
272: END IF;
273: END LOOP;
274: DBMS_SQL.close_cursor(cursor_id);
275:
276: END;
277:
278: --
289: return (0);
290:
291: EXCEPTION
292: WHEN OTHERS THEN
293: IF DBMS_SQL.is_open(cursor_id) THEN
294: DBMS_SQL.close_cursor(cursor_id);
295: END IF;
296: return (-3);
297: END Populate_Remote_Amounts;
290:
291: EXCEPTION
292: WHEN OTHERS THEN
293: IF DBMS_SQL.is_open(cursor_id) THEN
294: DBMS_SQL.close_cursor(cursor_id);
295: END IF;
296: return (-3);
297: END Populate_Remote_Amounts;
298: