我想要一个Oracle管道函数,用于比较查询结果中的两条记录并仅显示查询结果之间已更改的列吗?比较两条记录,只显示差异
1
A
回答
2
它不太你想要什么,但凯文·米德对OracleFAQ博客有这对我的作品的解决方案:
3
这是一个钝器的方法来解决这个问题。
create or replace function col_diff
(p_empno_1 in emp.empno%type
, p_empno_2 in emp.empno%type)
return col_nt pipelined
is
out_val col_t := new col_t(null, null, null);
emp_rec1 emp%rowtype;
emp_rec2 emp%rowtype;
begin
select *
into emp_rec1
from emp
where empno = p_empno_1;
select *
into emp_rec2
from emp
where empno = p_empno_2;
if emp_rec1.ename != emp_rec2.ename
then
out_val.col_name := 'ENAME';
out_val.old_val := emp_rec1.ename;
out_val.new_val := emp_rec2.ename;
pipe row (out_val);
end if;
if emp_rec1.hiredate != emp_rec2.hiredate
then
out_val.col_name := 'HIREDATE';
out_val.old_val := to_char(emp_rec1.hiredate, 'DD-MON-YYYY');
out_val.new_val := to_char(emp_rec2.hiredate, 'DD-MON-YYYY');
pipe row (out_val);
end if;
return;
end;
/
因此,考虑到本次测试数据...
SQL> select empno, ename, hiredate
2 from emp
3 where empno > 8100
4/
EMPNO ENAME HIREDATE
---------- ---------- ---------
8101 PSMITH 03-DEC-10
8102 PSMITH 02-JAN-11
SQL>
...我们得到如下的输出:
SQL> select * from table (col_diff(8101,8102))
2/
COL_NAME
------------------------------
OLD_VAL
-------------------------------------------------------------------
NEW_VAL
-------------------------------------------------------------------
HIREDATE
03-DEC-2010
02-JAN-2011
SQL>
现在,毫无疑问,你会喜欢的东西是不详细。我认为可以使用11g中引入的增强的方法4动态SQL来完成某些工作。唉,你说你正在使用10g。
相关问题
- 1. 只显示差异使用imagemagick比较
- 2. CloverETL:比较两条记录
- 3. Mysql比较两个表,只显示差异
- 4. 用于显示两条记录之间差异的SQL代码
- 5. 比较数组,并显示差异PHP
- 6. 比较两个JPEG图像并显示差异
- 7. 比较两个文件的内容,显示差异
- 8. Python程序比较两个文件以显示差异
- 9. 比较两个列表框并显示差异(VB.net)
- 10. 比较两个列表并突出显示差异
- 11. 使用VBA比较两列并突出显示差异
- 12. 比较PHP两个字符串,并显示字符差异
- 13. 比较两个HTML源代码并显示视觉差异
- 14. 比较2个目录,并显示每个文件的差异
- 15. 比较两个excel文件的差异
- 16. 比较两个SQLite表的差异
- 17. 比较两个表格的差异
- 18. Git:比较两个提交的差异
- 19. 比较两个NSDictionaries并查找差异
- 20. 比较两个文件,找出差异?
- 21. 如何比较两个NSImages的差异?
- 22. 比较两个T-SQL表的差异
- 23. 比较两个表来检查差异
- 24. 比较两个JSONArray和发现差异
- 25. 如何在比较两条相似的行时找到差异
- 26. 查询发现差异,只显示我想只显示那些记录不同的是,其差值小于零
- 27. Python 3.6:比较两个大gzipped csv文件和获取差异记录
- 28. 从两个表进行比较的记录,并强调个体差异
- 29. 结果只显示一条记录
- 30. 只有一条记录显示
它“有”是一个管道函数? –