Обновите столбец базовой таблицы, используя дополнительную таблицу, в которой у нас будет иерархия для запуска обновлений - PullRequest
0 голосов
/ 04 апреля 2019

У нас есть базовая таблица (скажем, таблица сотрудников) и дополнительная таблица, в которой есть две вещи: 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
...