0
我正在研究oracle 11g中的更改数据捕获。我想在变化表例如只更新的列更改oracle 11g中的数据捕获
EMPNO ENAME JOB MGR HIREDATE DEPTNO
5 ford clerk 104 01-JAN-12 11
5 ford clerk 104 01-JAN-12 18
考虑上表中的变化表,这里只部门号已更新,所以我只需要deptno列在表中。这个怎么做?
我正在研究oracle 11g中的更改数据捕获。我想在变化表例如只更新的列更改oracle 11g中的数据捕获
EMPNO ENAME JOB MGR HIREDATE DEPTNO
5 ford clerk 104 01-JAN-12 11
5 ford clerk 104 01-JAN-12 18
考虑上表中的变化表,这里只部门号已更新,所以我只需要deptno列在表中。这个怎么做?
一个可能适合您的需求并且不需要动态SQL的选项是聚合员工记录,然后检查每个列中是否发生更改。
SELECT
EMPNO,
ENAME,
CASE WHEN COUNT(DISTINCT JOB) > 1
THEN 'yes' ELSE 'no' END AS job_changed,
CASE WHEN COUNT(DISTINCT MGR) > 1
THEN 'yes' ELSE 'no' END AS mgr_changed,
CASE WHEN COUNT(DISTINCT HIREDATE) > 1
THEN 'yes' ELSE 'no' END AS hire_date_changed,
CASE WHEN COUNT(DISTINCT DEPTNO) > 1
THEN 'yes' ELSE 'no' END AS dept_changed
FROM yourTable
GROUP BY
EMPNO,
ENAME