我想要一個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. 只有一條記錄顯示
它「有」是一個管道函數? –