У нас есть базовая таблица (скажем, таблица сотрудников) и дополнительная таблица, в которой есть две вещи: 1) Иерархия (0-10), которую следует учитывать при обновлении базовой таблицы 2) для каждой иерархии есть еще один столбец с именем «COLS» вв этом столбце у нас есть такие значения, как 'EMPLOYEE_ID = 100', 'HIRE_DATE BETWEEN SYSDATE-90 AND SYSDATE'
нам нужно обновить поле базовой таблицы "VALS", выполнив иерархию во вторичной таблице и выбрать столбцыв столбце «COLS» и обновите соответственно
Я попытался поиграть с коллекциями, чтобы получить все имена столбцов и значения «EMPLOYEE_ID = 100» в виде FIELD = EMPLOYEE_ID и VALS = 100 для всех значений в «COLS» COLUMNдополнительного стола
DECLARE
TYPE scio_r IS RECORD (cols VARCHAR2(40), valus NUMBER, HIER NUMBER);
TYPE scio_a IS TABLE OF scio_r;
nt_scio scio_a := scio_a();
COL VARCHAR2(40);
BEGIN
SELECT REGEXP_SUBSTR(cols,'\S+') field,
REGEXP_SUBSTR(cols,'[[:digit:]]+') vals,
HIERARCHY
BULK COLLECT INTO nt_scio
FROM temp_table ;
FOR x IN nt_Scio.FIRST..nt_Scio.LAST LOOP
col := CASE WHEN x = nt_scio(x).hier THEN nt_scio(x).cols END;
DBMS_OUTPUT.PUT_LINE(col);
/*DBMS_OUTPUT.PUT_LINE(nt_scio(x).cols);
DBMS_OUTPUT.PUT_LINE(nt_scio(x).valus);*/
END LOOP;
END;
/
````enter image description here[enter image description here][1]
[enter image description here][2]
[1]: https://i.stack.imgur.com/51pm3.jpg
[2]: https://i.stack.imgur.com/pGIhD.jpg