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

PL/SQL ORA-01422:सटीक फ़ेच रिटर्न अनुरोधित पंक्तियों की संख्या से अधिक है

SELECT INTO अगर यह 1 पंक्ति के अलावा कुछ भी देता है तो कथन एक त्रुटि फेंक देगा। यदि यह 0 पंक्तियाँ लौटाता है, तो आपको एक no_data_found मिलेगा अपवाद। यदि यह 1 से अधिक पंक्ति देता है, तो आपको एक too_many_rows मिलेगा अपवाद। जब तक आप यह नहीं जानते कि 3000 से अधिक वेतन वाला हमेशा 1 कर्मचारी होगा, आप SELECT INTO नहीं चाहते हैं यहां बयान।

सबसे अधिक संभावना है, आप डेटा की कई पंक्तियों (संभावित रूप से) को फिर से चालू करने के लिए एक कर्सर का उपयोग करना चाहते हैं (मैं यह भी मान रहा हूं कि आप कार्टेशियन उत्पाद करने के बजाय दो तालिकाओं के बीच उचित जुड़ाव करना चाहते हैं, इसलिए मैं मान रहा हूं कि वहां एक departmentID है दोनों टेबल में कॉलम)

BEGIN
  FOR rec IN (SELECT EMPLOYEE.EMPID, 
                     EMPLOYEE.ENAME, 
                     EMPLOYEE.DESIGNATION, 
                     EMPLOYEE.SALARY,  
                     DEPARTMENT.DEPT_NAME 
                FROM EMPLOYEE, 
                     DEPARTMENT 
               WHERE employee.departmentID = department.departmentID
                 AND EMPLOYEE.SALARY > 3000)
  LOOP
    DBMS_OUTPUT.PUT_LINE ('Employee Nnumber: ' || rec.EMPID);
    DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
    DBMS_OUTPUT.PUT_LINE ('Employee Name: ' || rec.ENAME);
    DBMS_OUTPUT.PUT_LINE ('---------------------------------------------------');
    DBMS_OUTPUT.PUT_LINE ('Employee Designation: ' || rec.DESIGNATION);
    DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
    DBMS_OUTPUT.PUT_LINE ('Employee Salary: ' || rec.SALARY);
    DBMS_OUTPUT.PUT_LINE ('----------------------------------------------------');
    DBMS_OUTPUT.PUT_LINE ('Employee Department: ' || rec.DEPT_NAME);
  END LOOP;
END;

मुझे लगता है कि आप पीएल/एसक्यूएल भी सीख रहे हैं। वास्तविक कोड में, आप कभी भी dbms_output . का उपयोग नहीं करेंगे इस तरह और किसी पर भी निर्भर नहीं होगा कि आप dbms_output में जो डेटा लिखते हैं, उसे देखते हैं बफर।



  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. कैसे जांचें कि संग्रहीत प्रक्रिया मौजूद है या नहीं?

  3. SQL में हमेशा दशमलव स्थान दिखाएं?

  4. NEW_TIME () Oracle में फ़ंक्शन

  5. Oracle में नंबर को स्ट्रिंग में कैसे बदलें?