我们有一个基本表(例如employees表)和一个辅助表,主要有两件事 1)更新基本表时要考虑的层次结构(0-10) 2)在每个层次结构中,都有另一列称为“ COLS” 在此列中,我们有类似“ EMPLOYEE_ID = 100”的值, “ HIRE_DATE SYSDATE-90 AND SYSDATE之间”
我们需要通过遍历辅助表中的层次结构来更新基本表字段“ VALS”,并选择“ COLS”列中的列并进行相应的更新
我尝试使用集合来获取所有列名称和值 'EMPLOYEE_ID = 100'如FIELD = EMPLOYEE_ID和VALS = 100 辅助表的“ COLS”列中的所有值
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