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

कर्सर के साथ PL/SQL नेस्टेड लूप्स

आपको REF CURSOR . से लाने की आवश्यकता है और कर्सर खोलते समय कॉलम_नाम को चयन कथन में गतिशील रूप से संलग्न करें। यहां मैं USER_TAB_COLUMNS . से सभी कॉलम नाम ला रहा हूं तालिका के लिए EMPLOYEES और उनके संबंधित मान v_temp को असाइन करना।

SET SERVEROUTPUT ON;
DECLARE
  v_temp VARCHAR(50);
  query1 VARCHAR2(1000);
  c1 SYS_REFCURSOR;
  CURSOR c2
  IS
    SELECT COLUMN_NAME xxx FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'EMPLOYEES';
BEGIN
  FOR s2 IN c2
  LOOP
    --do something
    query1 := 'SELECT ' ||s2.xxx||' FROM EMPLOYEES';
    OPEN c1 FOR query1 ;
    LOOP
      FETCH c1 INTO v_temp;
      DBMS_OUTPUT.PUT_LINE('COLUMN:'||s2.xxx||', VALUE:'|| v_temp);
      EXIT
    WHEN c1%NOTFOUND;
    END LOOP;
    CLOSE c1;
  END LOOP;
END;
/

चूंकि EMPLOYEES . के सभी स्तंभों की लंबाई हैं <50 , यह ठीक काम कर रहा है। रूपांतरण NUMBER . के लिए परोक्ष रूप से होता है और DATE डेटा प्रकार।

यहाँ एक नमूना आउटपुट है।

COLUMN:EMPLOYEE_ID, VALUE:100
COLUMN:EMPLOYEE_ID, VALUE:101
COLUMN:EMPLOYEE_ID, VALUE:102
COLUMN:FIRST_NAME, VALUE:Eleni
COLUMN:FIRST_NAME, VALUE:Eleni
COLUMN:LAST_NAME, VALUE:Whalen
COLUMN:LAST_NAME, VALUE:Fay
COLUMN:HIRE_DATE, VALUE:17-06-03
COLUMN:HIRE_DATE, VALUE:21-09-05


  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 to_date फ़ंक्शन। मास्क की जरूरत

  2. ट्रिगर के साथ भौतिक दृश्य?

  3. Oracle - पंक्तियों को स्तंभों में स्थानांतरित करें

  4. उत्परिवर्तित तालिका को हटाने पर SQL ट्रिगर

  5. एक विशिष्ट JDK संस्करण के लिए नमूने और डेमो ढूँढना