Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक तालिका में दो पंक्तियों के बीच अंतर ढूँढना। आकाशवाणी

आप PL/SQL ब्लॉक और डायनेमिक CURSOR . के साथ कुछ इस तरह की कोशिश कर सकते हैं ध्यान दें कि यहां मैं आईडी =1 और 2 को एक चर के रूप में मनोरंजक कर रहा हूं जिसे आपको पता होना चाहिए और कहीं से गुजरना चाहिए।

DBMS_SQL.RETURN_RESULT (12c और ऊपर) का उपयोग गतिशील रूप से निर्मित कर्सर से आउटपुट प्रदर्शित करने के लिए किया जाता है। वैकल्पिक रूप से, आप PRINT . का उपयोग कर सकते हैं 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. क्या ऑरैकल अप्रतिबद्ध पठन विकल्प की अनुमति देता है?

  2. Oracle और PHP का उपयोग करना:SQL डेवलपर में काम करता है लेकिन PHP फ़ाइल परिणाम ORA-00900:अमान्य कथन

  3. Oracle उपयोगकर्ता बनाना यदि वह पहले से मौजूद नहीं है

  4. SAP ABAP सिस्टम से डेटा कैसे निकालें?

  5. ओरेकल एसक्यूएल लिस्टैग फ़ंक्शन