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

Oracle का उपयोग करना:क्या मैं पिवट खंड में 'गतिशील रूप से' निर्मित चर का उपयोग कर सकता हूं?

12c और उससे अधिक के लिए, आप DBMS_SQL.RETURN_RESULT . का उपयोग कर सकते हैं एक REFCURSOR खोलकर गतिशील PIVOT . के लिए क्वेरी।

मैंने कुख्यात (+) . को हटा दिया है left join . के लिए सिंटैक्स , हमेशा एएनएसआई का उपयोग करें join वाक्य रचना।

DECLARE
    exam_ids   VARCHAR2(255);
    x          SYS_REFCURSOR;
BEGIN
    SELECT
        LISTAGG(''''
                  || exam_id
                  || ''' AS "'
                  || exam_name
                  || '"',',') WITHIN GROUP(
            ORDER BY
                exam_id DESC
        )
    INTO exam_ids
    FROM
        exam;

    OPEN x FOR 'SELECT
        *
               FROM
        (
            SELECT
                u.user_id,
                u.user_name,
                e.exam_id,
                eu.exam_date
            FROM
                users u
                LEFT JOIN exam_user eu ON u.user_id = eu.user_id
                LEFT JOIN exam e ON e.exam_id = eu.exam_id
            ORDER BY
                u.user_id
        )
            PIVOT ( MAX ( exam_date )
                FOR exam_id
                IN ( ' || EXAM_IDS || ' )
            )
    ORDER BY
        1';

    dbms_sql.return_result(x);
END;
/

11g के लिए, आप एक बाइंड वेरिएबल और print . का उपयोग कर सकते हैं कमांड (स्क्रिप्ट (F5) के रूप में चलाने पर sqlplus और sql डेवलपर/टॉड में काम करता है)

variable x REFCURSOR  -- bind variable declared.
DECLARE
    ..   -- no need to declare sys_refcursor
BEGIN
     ..

    OPEN :x FOR 'SELECT . --note the change with colon
        *
               FROM
        (
            SELECT
            ..

END;
/


print x




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वी$एसक्यूएल_SHARED_CURSOR TOP_LEVEL_RPI_CURSOR

  2. ग्रोवी एसक्यूएल ओरेकल ऐरे फंक्शन/प्रक्रिया आउट पैरामीटर पंजीकरण

  3. समय के साथ डेटा का मूल्य

  4. हजारों WHERE क्लॉज के साथ SQL क्वेरी को ऑप्टिमाइज़ कैसे करें

  5. समूह के साथ एसक्यूएल फीफो क्वेरी