Требование
Таблица XYZ
содержит столбец p_type
, который содержит имя столбца таблицы PQR. Теперь здесь я извлекаю запись из таблицы XYZ
и sum(amount)
на основе группы по p_type
, которая извлекается из записи из таблицы XYZ
. Я использовал раздел, потому что я также хочу t_id
, а не в группе. Теперь я беру записи, извлеченные из таблицы PQR
, и сравниваю с записью таблицы XYZ
, и для каждой записи, извлеченной из таблицы PQR
, sum(amount)
сравнивается с записью таблицы XYZ.
Вопрос
Я получил xyz_id
и t_id
во вложенной таблице, но я хочу взять это в курсор, есть ли способ сделать это, чтобы я мог выбрать эту запись за один раз.
Вероятным решением, которое я нашел, является использование временной таблицы, но если я не хочу использовать временную таблицу, то каким будет решение.
DECLARE
type queryCursor is ref cursor;
v_ref queryCursor;
v_query queryCursor;
v_t_id pqr.t_id%TYPE;
v_total NUMBER (38);
CURSOR varcursor
IS
SELECT abc_id,p_type,p_amount
FROM xyz;
v_temp VARCHAR2 (4000);
v_temp1 VARCHAR2 (200);
v_temp2 VARCHAR2 (200);
TYPE XYZ_table IS TABLE OF XYZ%ROWTYPE;
v_XYZ XYZ_table :=XYZ_table();
TYPE PQR_table IS TABLE OF PQR%ROWTYPE;
v_PQR PQR_table :=XYZ_table();
BEGIN
FOR varcursor_rec IN varcursor
LOOP
v_temp1 := varcursor_rec.p_type; --p_type contains column name of the pqr table
v_temp :=
'SELECT T_ID,SUM(AMOUNT) OVER (PARTITION BY '
|| v_temp1
|| ' ORDER BY '
|| v_temp1
|| ') total from pqr
||';
OPEN v_ref FOR v_temp;
LOOP
FETCH V_REF into v_t_id,v_total;
exit when V_REF%notfound;
IF varcursor_rec.p_amount <v_total
THEN
counter:=counter+1;
v_XYZ.EXTEND;
v_PQR.EXTEND;
v_XYZ(counter).xyz_id:=varcursor_rec.xyz_id;
v_PQR(counter).t_id:=varcursor_rec.t_id;
--HOW CAN I FETCH THE
END IF;
END LOOP;
END LOOP;
END;
/
Таблица XYZ:
xyz_id p_type p_amount
============================================================
p_1 p_id 100000
p_2 p_id,t_status 100
Таблица ПКР:
T_id p_id amount t_status
=================================================
1 E1 100 open
2 E2 200 open
3 E1 200 close
4 E2 300 open
5 E1 100 close
oracle
. - person Ed Harper   schedule 12.05.2011