Re: DBMS_SQL - dynamic SQL
From: J. McLean <someone_at_somewhere.com>
Date: Wed, 23 Aug 2000 07:14:51 -0400
Message-ID: <8o0bg102g45_at_enews3.newsguy.com>
close settings; Received on Wed Aug 23 2000 - 13:14:51 CEST
Date: Wed, 23 Aug 2000 07:14:51 -0400
Message-ID: <8o0bg102g45_at_enews3.newsguy.com>
[Quoted] Here is an example of some stuffed I've used.
v_sql := 'select st, ot, dt, wdate from falcon.employee_time_sheet where employee_id = :a and wdate >= :b and wdate <= :b + 6 and job_id = :c and task_id = :d and ';
cursor1 := dbms_sql.open_cursor;
if data_block(i).subtask_id is null then v_sql := v_sql || ' subtask_id is null and '; else v_sql := v_sql || ' subtask_id = :e and '; end if; if data_block(i).ecr_id is null then v_sql := v_sql || ' ecr_id is null and '; else v_sql := v_sql || ' ecr_id = :f and '; end if; if data_block(i).ja_id is null then v_sql := v_sql || ' ja_id is null'; else v_sql := v_sql || ' ja_id = :g'; end if; dbms_sql.parse(cursor1, v_sql, 2); if data_block(i).subtask_id is not null then dbms_sql.bind_variable(cursor1, ':e', data_block(i).subtask_id); end if; if data_block(i).ecr_id is not null then dbms_sql.bind_variable(cursor1, ':f', data_block(i).ecr_id); end if; if data_block(i).ja_id is not null then dbms_sql.bind_variable(cursor1, ':g', data_block(i).ja_id); end if; dbms_sql.bind_variable(cursor1, ':a', data_block(i).employee_id); dbms_sql.bind_variable(cursor1, ':b', p_monday); dbms_sql.bind_variable(cursor1, ':c', data_block(i).job_id); dbms_sql.bind_variable(cursor1, ':d', data_block(i).task_id); dbms_sql.define_column(cursor1, 1, col_st); dbms_sql.define_column(cursor1, 2, col_st); dbms_sql.define_column(cursor1, 3, col_st); dbms_sql.define_column(cursor1, 4, col_date); n_returned := dbms_sql.execute (cursor1); --get st/ot/dt for the settings for each day of the week while dbms_sql.fetch_rows (cursor1) > 0 loop dbms_sql.column_value(cursor1, 4, d_temp); v_day := rtrim(to_char(d_temp, 'day')); if v_day = 'monday' then dbms_sql.column_value(cursor1, 1, data_block(i).monday_st); dbms_sql.column_value(cursor1, 2, data_block(i).monday_ot); dbms_sql.column_value(cursor1, 3, data_block(i).monday_dt); elsif v_day = 'tuesday' then dbms_sql.column_value(cursor1, 1, data_block(i).tuesday_st); dbms_sql.column_value(cursor1, 2, data_block(i).tuesday_ot); dbms_sql.column_value(cursor1, 3, data_block(i).tuesday_dt); elsif v_day = 'wednesday' then dbms_sql.column_value(cursor1, 1, data_block(i).wednesday_st); dbms_sql.column_value(cursor1, 2, data_block(i).wednesday_ot); dbms_sql.column_value(cursor1, 3, data_block(i).wednesday_dt); elsif v_day = 'thursday' then dbms_sql.column_value(cursor1, 1, data_block(i).thursday_st); dbms_sql.column_value(cursor1, 2, data_block(i).thursday_ot); dbms_sql.column_value(cursor1, 3, data_block(i).thursday_dt); elsif v_day = 'friday' then dbms_sql.column_value(cursor1, 1, data_block(i).friday_st); dbms_sql.column_value(cursor1, 2, data_block(i).friday_ot); dbms_sql.column_value(cursor1, 3, data_block(i).friday_dt); elsif v_day = 'saturday' then dbms_sql.column_value(cursor1, 1, data_block(i).saturday_st); dbms_sql.column_value(cursor1, 2, data_block(i).saturday_ot); dbms_sql.column_value(cursor1, 3, data_block(i).saturday_dt); elsif v_day = 'sunday' then dbms_sql.column_value(cursor1, 1, data_block(i).sunday_st); dbms_sql.column_value(cursor1, 2, data_block(i).sunday_ot); dbms_sql.column_value(cursor1, 3, data_block(i).sunday_dt); end if; end loop; dbms_sql.close_cursor(cursor1); i := i + 1; end loop;
close settings; Received on Wed Aug 23 2000 - 13:14:51 CEST