242: -- Debug Message
243: --Start Process
244: begin
245: --Open the cursor
246: l_cursor_handle := dbms_sql.open_cursor;
247: l_formula := 'SELECT '||l_formula||' FROM DUAL';
248: disp('Formula:'||l_formula||', ctr id:'||p_counter_id);
249: -- parse the formula using dual table
250: -- if formula is :a/2, in a sql statement it will become 'select :a/2 from dual'
247: l_formula := 'SELECT '||l_formula||' FROM DUAL';
248: disp('Formula:'||l_formula||', ctr id:'||p_counter_id);
249: -- parse the formula using dual table
250: -- if formula is :a/2, in a sql statement it will become 'select :a/2 from dual'
251: DBMS_SQL.PARSE(l_cursor_handle, l_formula, dbms_sql.native);
252: --define column to select value
253: DBMS_SQL.DEFINE_COLUMN(l_cursor_handle,1,l_counter_reading);
254: FOR bvars IN ctr_bvars LOOP
255: l_bind_var_value := 100;
249: -- parse the formula using dual table
250: -- if formula is :a/2, in a sql statement it will become 'select :a/2 from dual'
251: DBMS_SQL.PARSE(l_cursor_handle, l_formula, dbms_sql.native);
252: --define column to select value
253: DBMS_SQL.DEFINE_COLUMN(l_cursor_handle,1,l_counter_reading);
254: FOR bvars IN ctr_bvars LOOP
255: l_bind_var_value := 100;
256: l_bind_var_name := ':'||ltrim(bvars.bind_var_name);
257: disp('Bind Var:'||l_bind_var_name||', Value:'||l_bind_var_value);
254: FOR bvars IN ctr_bvars LOOP
255: l_bind_var_value := 100;
256: l_bind_var_name := ':'||ltrim(bvars.bind_var_name);
257: disp('Bind Var:'||l_bind_var_name||', Value:'||l_bind_var_value);
258: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_var_name, l_bind_var_value);
259: END LOOP bvars;
260: l_n_temp := dbms_sql.execute(l_cursor_handle);
261: IF dbms_sql.fetch_rows(l_cursor_handle) > 0 THEN
262: dbms_sql.column_value(l_cursor_handle,1,l_counter_reading);
256: l_bind_var_name := ':'||ltrim(bvars.bind_var_name);
257: disp('Bind Var:'||l_bind_var_name||', Value:'||l_bind_var_value);
258: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_var_name, l_bind_var_value);
259: END LOOP bvars;
260: l_n_temp := dbms_sql.execute(l_cursor_handle);
261: IF dbms_sql.fetch_rows(l_cursor_handle) > 0 THEN
262: dbms_sql.column_value(l_cursor_handle,1,l_counter_reading);
263: disp('Counter value:'||l_counter_reading);
264: x_valid_flag := 'Y';
257: disp('Bind Var:'||l_bind_var_name||', Value:'||l_bind_var_value);
258: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_var_name, l_bind_var_value);
259: END LOOP bvars;
260: l_n_temp := dbms_sql.execute(l_cursor_handle);
261: IF dbms_sql.fetch_rows(l_cursor_handle) > 0 THEN
262: dbms_sql.column_value(l_cursor_handle,1,l_counter_reading);
263: disp('Counter value:'||l_counter_reading);
264: x_valid_flag := 'Y';
265: END IF;
258: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_var_name, l_bind_var_value);
259: END LOOP bvars;
260: l_n_temp := dbms_sql.execute(l_cursor_handle);
261: IF dbms_sql.fetch_rows(l_cursor_handle) > 0 THEN
262: dbms_sql.column_value(l_cursor_handle,1,l_counter_reading);
263: disp('Counter value:'||l_counter_reading);
264: x_valid_flag := 'Y';
265: END IF;
266: DBMS_SQL.close_cursor(l_cursor_handle);
262: dbms_sql.column_value(l_cursor_handle,1,l_counter_reading);
263: disp('Counter value:'||l_counter_reading);
264: x_valid_flag := 'Y';
265: END IF;
266: DBMS_SQL.close_cursor(l_cursor_handle);
267: EXCEPTION
268: WHEN OTHERS THEN
269: IF DBMS_SQL.IS_OPEN(l_cursor_handle) THEN
270: DBMS_SQL.CLOSE_cursor(l_cursor_handle);
265: END IF;
266: DBMS_SQL.close_cursor(l_cursor_handle);
267: EXCEPTION
268: WHEN OTHERS THEN
269: IF DBMS_SQL.IS_OPEN(l_cursor_handle) THEN
270: DBMS_SQL.CLOSE_cursor(l_cursor_handle);
271: END IF;
272: if sqlcode <> -1008 then
273: RAISE;
266: DBMS_SQL.close_cursor(l_cursor_handle);
267: EXCEPTION
268: WHEN OTHERS THEN
269: IF DBMS_SQL.IS_OPEN(l_cursor_handle) THEN
270: DBMS_SQL.CLOSE_cursor(l_cursor_handle);
271: END IF;
272: if sqlcode <> -1008 then
273: RAISE;
274: else
487: l_sqlwhere := l_sqlwhere || ':x_derive_counter_id';
488: END LOOP;
489: l_sqlstr := l_sqlstr || l_sqlfrom || ' where '||l_sqlwhere||')';
490: disp(l_sqlstr);
491: l_cursor_handle := dbms_sql.open_cursor;
492: DBMS_SQL.PARSE(l_cursor_handle, l_sqlstr, dbms_sql.native);
493: DBMS_SQL.DEFINE_COLUMN(l_cursor_handle,1,l_ctr_value);
494:
495: BINDVAL_DERIVECTRID := ctrs.derive_counter_id;
488: END LOOP;
489: l_sqlstr := l_sqlstr || l_sqlfrom || ' where '||l_sqlwhere||')';
490: disp(l_sqlstr);
491: l_cursor_handle := dbms_sql.open_cursor;
492: DBMS_SQL.PARSE(l_cursor_handle, l_sqlstr, dbms_sql.native);
493: DBMS_SQL.DEFINE_COLUMN(l_cursor_handle,1,l_ctr_value);
494:
495: BINDVAL_DERIVECTRID := ctrs.derive_counter_id;
496: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, ':x_derive_counter_id',BINDVAL_DERIVECTRID);
489: l_sqlstr := l_sqlstr || l_sqlfrom || ' where '||l_sqlwhere||')';
490: disp(l_sqlstr);
491: l_cursor_handle := dbms_sql.open_cursor;
492: DBMS_SQL.PARSE(l_cursor_handle, l_sqlstr, dbms_sql.native);
493: DBMS_SQL.DEFINE_COLUMN(l_cursor_handle,1,l_ctr_value);
494:
495: BINDVAL_DERIVECTRID := ctrs.derive_counter_id;
496: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, ':x_derive_counter_id',BINDVAL_DERIVECTRID);
497:
492: DBMS_SQL.PARSE(l_cursor_handle, l_sqlstr, dbms_sql.native);
493: DBMS_SQL.DEFINE_COLUMN(l_cursor_handle,1,l_ctr_value);
494:
495: BINDVAL_DERIVECTRID := ctrs.derive_counter_id;
496: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, ':x_derive_counter_id',BINDVAL_DERIVECTRID);
497:
498: while lj < i+1
499: loop
500: l_bind_varname := t2(lj).BINDNAME_DEFVAL;
498: while lj < i+1
499: loop
500: l_bind_varname := t2(lj).BINDNAME_DEFVAL;
501: l_bind_varvalc := t2(lj).BINDVAL_DEFVAL;
502: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_varname, l_bind_varvalc);
503: l_bind_varname := t2(lj).BINDNAME_RIGHTVAL;
504: l_bind_varvalc := t2(lj).BINDVAL_RIGHTVAL;
505: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_varname, l_bind_varvalc);
506: l_bind_varname := t2(lj).BINDNAME_CTRPROPID;
501: l_bind_varvalc := t2(lj).BINDVAL_DEFVAL;
502: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_varname, l_bind_varvalc);
503: l_bind_varname := t2(lj).BINDNAME_RIGHTVAL;
504: l_bind_varvalc := t2(lj).BINDVAL_RIGHTVAL;
505: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_varname, l_bind_varvalc);
506: l_bind_varname := t2(lj).BINDNAME_CTRPROPID;
507: l_bind_varvaln := t2(lj).BINDVAL_CTRPROPID;
508: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_varname, l_bind_varvaln);
509: lj:= lj+1;
504: l_bind_varvalc := t2(lj).BINDVAL_RIGHTVAL;
505: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_varname, l_bind_varvalc);
506: l_bind_varname := t2(lj).BINDNAME_CTRPROPID;
507: l_bind_varvaln := t2(lj).BINDVAL_CTRPROPID;
508: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_varname, l_bind_varvaln);
509: lj:= lj+1;
510: end loop;
511:
512: l_n_temp := dbms_sql.execute(l_cursor_handle);
508: DBMS_SQL.BIND_VARIABLE(l_cursor_handle, l_bind_varname, l_bind_varvaln);
509: lj:= lj+1;
510: end loop;
511:
512: l_n_temp := dbms_sql.execute(l_cursor_handle);
513: IF dbms_sql.fetch_rows(l_cursor_handle) > 0 THEN
514: dbms_sql.column_value(l_cursor_handle,1,l_ctr_value);
515: disp('Counter value:'||l_ctr_value);
516: END IF;
509: lj:= lj+1;
510: end loop;
511:
512: l_n_temp := dbms_sql.execute(l_cursor_handle);
513: IF dbms_sql.fetch_rows(l_cursor_handle) > 0 THEN
514: dbms_sql.column_value(l_cursor_handle,1,l_ctr_value);
515: disp('Counter value:'||l_ctr_value);
516: END IF;
517: DBMS_SQL.close_cursor(l_cursor_handle);
510: end loop;
511:
512: l_n_temp := dbms_sql.execute(l_cursor_handle);
513: IF dbms_sql.fetch_rows(l_cursor_handle) > 0 THEN
514: dbms_sql.column_value(l_cursor_handle,1,l_ctr_value);
515: disp('Counter value:'||l_ctr_value);
516: END IF;
517: DBMS_SQL.close_cursor(l_cursor_handle);
518: x_valid_flag := 'Y';
513: IF dbms_sql.fetch_rows(l_cursor_handle) > 0 THEN
514: dbms_sql.column_value(l_cursor_handle,1,l_ctr_value);
515: disp('Counter value:'||l_ctr_value);
516: END IF;
517: DBMS_SQL.close_cursor(l_cursor_handle);
518: x_valid_flag := 'Y';
519: END LOOP;
520: EXCEPTION
521: WHEN OTHERS THEN
518: x_valid_flag := 'Y';
519: END LOOP;
520: EXCEPTION
521: WHEN OTHERS THEN
522: IF DBMS_SQL.IS_OPEN(l_cursor_handle) THEN
523: DBMS_SQL.CLOSE_cursor(l_cursor_handle);
524: END IF;
525: RAISE;
526: END;
519: END LOOP;
520: EXCEPTION
521: WHEN OTHERS THEN
522: IF DBMS_SQL.IS_OPEN(l_cursor_handle) THEN
523: DBMS_SQL.CLOSE_cursor(l_cursor_handle);
524: END IF;
525: RAISE;
526: END;
527: