Megpróbálok létrehozni egy növekményes beszúrási értéket a HR_NUM nevű oszlopba való beszúráshoz. Ennek a HR_NUM értéknek minden alkalommal növekednie kell, amikor olyan új bejegyzést hozok létre, amely megfelel a kurzoromban lévő csoportosítási feltételeknek (c1). Nem szeretném a kurzoromba helyezni, mert nem akarok ezen a számon csoportosítani, mivel ez elrontja a csoportosítást. Köszönöm, és kérem, jelezze, ha valamit hiányolok, és/vagy tudok valamit pontosítani/szerkeszteni.
Tudom, hogy az oracle for ciklus szintaxisa a következő:
set serveroutput on;
DECLARE
date_test date;
BEGIN
select sysdate into date_test from dual;
FOR i in 1..24
LOOP
DBMS_OUTPUT.PUT_LINE(date_test + i/24);
END LOOP;
END;
Az alábbiakban látható a jelenlegi plsql kódom, amelyben egy ciklust próbálok beépíteni a HR_NUM: automatikus növeléséhez (a HR_NUM változó a BOLD-ban)
create or replace PROCEDURE SUM_HOURLY IS
Cursor c1 is
select
sum(value_tx) AS sum_of_Values
, ff.form_field_tx
, ff.form_field_id
, (CASE WHEN UTC_OFFSET = 4
THEN HR - 3/24
WHEN UTC_OFFSET = 5
THEN HR - 2/24
WHEN UTC_OFFSET = 6
THEN HR - 1/24
END) as HR_CONVERTED_PST
, to_char(to_date((CASE WHEN UTC_OFFSET = 4
THEN HR - 3/24
WHEN UTC_OFFSET = 5
THEN HR - 2/24
WHEN UTC_OFFSET = 6
THEN HR - 1/24
END), 'DD-MM-YY hh24:mi:ss'), 'dddyyyy') as DATA_DATE
, v.DATA_CODE
from value v
join submission_value sv on v.value_id = sv.value_id
join form_field ff on sv.form_field_id = ff.form_field_id
group by (CASE WHEN UTC_OFFSET = 4
THEN HR - 3/24
WHEN UTC_OFFSET = 5
THEN HR - 2/24
WHEN UTC_OFFSET = 6
THEN HR - 1/24
END),
to_char(to_date((CASE WHEN UTC_OFFSET = 4
THEN HR - 3/24
WHEN UTC_OFFSET = 5
THEN HR - 2/24
WHEN UTC_OFFSET = 6
THEN HR - 1/24
END), 'DD-MM-YY hh24:mi:ss'), 'dddyyyy'), ff.form_field_id, ff.form_field_tx, v.data_code,;
-----------
l_var c1%ROWTYPE;
v_value_id value.value_id%type;
-----------
BEGIN
OPEN c1;
LOOP
FETCH c1 into l_var;
EXIT WHEN c1%NOTFOUND;
insert into value (value_id, energy_product_id, data_source_id, unit_cd, value_tx, utc_offset, data_date, hr_utc, hr, hr_num, data_code, create_dt, create_user_id, modify_dt, modify_user_id, effective_dt, inactive_dt)
values (null, '109', '269', 'Mwh', l_var.sum_of_values, 0, l_var.data_date, 'UTC0', l_var.HR_CONVERTED_PST, **incremental_Variable(?)**, 'NA', sysdate, '1', null, null, null, null)
END LOOP;
CLOSE c1;
END SUM_HOURLY;