首页 > 解决方案 > 更新基表列,使用辅助表,我们将在其中运行更新的层次结构

问题描述

我们有一个基表(例如员工表)和一个辅助表,其中主要有两件事 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”列中的所有值

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

标签: oracleplsqlsql-update

解决方案


推荐阅读