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

Oracle में डायनामिक क्रॉस टैब क्वेरी

VARCHAR2 वैरिएबल से संकलित डायनेमिक SQL को निष्पादित करने के लिए आप डायनेमिक कर्सर का उपयोग कर सकते हैं:

DECLARE 
       w_sql             VARCHAR2 (4000);
       cursor_           INTEGER;
       v_f1    NUMBER (6);
       v_f2    NUMBER (2);
       v_some_value_2_filter_4    NUMBER (2);
       rc      INTEGER         DEFAULT 0;
BEGIN
        -- join as many tables as you need and construct your where clause
        w_sql :='SELECT f1, f2 from TABLE1 t1, TABLE2 t2, ... WHERE t1.f1 =' || v_some_value_2_filter_4 ; 

       -- Open your cursor
       cursor_ := DBMS_SQL.open_cursor;
       DBMS_SQL.parse (cursor_, w_sql, 1);
       DBMS_SQL.define_column (cursor_, 1, v_f1);
       DBMS_SQL.define_column (cursor_, 2, v_f2);
      -- execute your SQL
       rc := DBMS_SQL.EXECUTE (cursor_);

       WHILE DBMS_SQL.fetch_rows (cursor_) > 0
       LOOP
          -- get values from record columns
          DBMS_SQL.COLUMN_VALUE (cursor_, 1, v_f1);
          DBMS_SQL.COLUMN_VALUE (cursor_, 2, v_f2);

          -- do what you need with v_f1 and v_f2 variables

       END LOOP;

END;

या आप तत्काल निष्पादित का उपयोग कर सकते हैं , लागू करना आसान है अगर आपको केवल एक मूल्य की जांच करने या निष्पादित करने और क्वेरी डालने/अपडेट करने/हटाने की आवश्यकता है

    w_sql :='select f1 from table where f1 = :variable';
    execute immediate w_sql into v_f1 using 'valor1'

यहां डायनेमिक कर्सर के बारे में अधिक जानकारी:http://docs। oracle.com/cd/B10500_01/appdev.920/a96590/adg09dyn.htm




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कर्सर पैरामीटर के साथ पाइपलाइन फ़ंक्शन oracle

  2. Oracle में समर्थित प्रदेशों की सूची कैसे लौटाएं?

  3. मैं Oracle पासवर्ड समाप्ति को कैसे बंद करूं?

  4. स्तंभ डेटा को किसी मान पर मैप करें (ओरेकल)

  5. Oracle 10g:MIN/MAX स्तंभ मान अनुमान