Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menemukan perbedaan antara dua baris dalam sebuah tabel. Peramal

Anda dapat mencoba sesuatu seperti ini dengan blok PL/SQL dan CURSOR Dinamis .Perhatikan bahwa di sini saya menggunakan ID =1 dan 2 sebagai variabel yang harus Anda ketahui dan lewati dari suatu tempat.

DBMS_SQL.RETURN_RESULT (12c ke atas) digunakan untuk menampilkan output dari kursor yang dibangun secara dinamis. Atau, Anda dapat menggunakan PRINT perintah untuk mengambil dan menampilkan o/p dari REFCURSOR .

SET serveroutput ON
DECLARE
  v_ref SYS_REFCURSOR;
  id1 X.ID%TYPE := 1;
  id2 X.ID%TYPE := 2;
  v_col  VARCHAR2(32);
  v_cols VARCHAR2(1000);
BEGIN
  FOR r IN
  ( SELECT column_name FROM USER_TAB_COLUMNS WHERE table_name = 'X'
  )
  LOOP
    EXECUTE IMMEDIATE ' 
SELECT 
CASE                 
WHEN a.'||r.column_name|| ' = ' || 'b.'|| r.column_name ||'                               
THEN a.'||r.column_name || ' END                     
FROM                           
X  a                
CROSS JOIN X b WHERE 
a.ID = :Id1 AND b.ID = :Id2' INTO v_col USING id1,id2 ;
    v_cols := v_cols ||
    CASE
    WHEN v_col IS NULL THEN
      ','||r.column_name
    END;
  END LOOP;
  v_cols := TRIM(BOTH ',' FROM v_cols);
  OPEN v_ref FOR 'select ' || v_cols || '  FROM X WHERE ID =  '||id1||'                
UNION ALL   select ' || v_cols || '  FROM X WHERE ID =  '||id2 ;
  DBMS_SQL.RETURN_RESULT(v_ref);
END;
/
ResultSet #1


ID                 CITY      ZIP          SEGMENT_ONE 
------------------ --------- ------------ ----------- 
1                            14228        X71         
2                  JamesTown 14845        X72         


PL/SQL procedure successfully completed.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dukungan Multi Bahasa di 11i/R12

  2. Cara Memformat Angka sebagai Angka Romawi di Oracle

  3. String Koneksi Oracle Dengan Otentikasi Windows

  4. Fungsi LISTAGG:hasil penggabungan string terlalu panjang

  5. Bergabung dengan Tabel di Oracle SQL Developer