ए 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
में जो डेटा लिखते हैं, उसे देखते हैं बफर।