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

लूप के लिए कर्सर नहीं मिलने पर संदेश कैसे प्रिंट करें

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

कुछ इस तरह:

DECLARE
  course_name    VARCHAR2(40) := '&course_input';
  v_rows_present BOOLEAN := FALSE;
BEGIN
  FOR course_rec IN (SELECT a.description,
                            a.cost,
                            a.prerequisite,
                            b.cost AS preq_cost
                     FROM   course a
                     LEFT   JOIN course b
                     ON     a.prerequisite = b.course_no
                     WHERE  upper(a.description) LIKE '%' || course_name || '%')
  LOOP
    v_rows_present := TRUE;

    IF course_rec.prerequisite IS NULL
    THEN
      dbms_output.put_line('There is NO prerequisite course for any that starts on ' || course_name || '. Try again');
    ELSE
      dbms_output.put_line('Course: ' || course_rec.course_description);
      dbms_output.put_line('Cost: ' || course_rec.cost);
      dbms_output.put_line('Prerequisite: ' || course_rec.prerequisite);
      dbms_output.put_line('Prerequisite Cost: ' || course_rec.prerequisite_cost);
      dbms_output.put_line('=================================================');

    END IF;
  END LOOP;

  IF NOT v_rows_present
  THEN
    dbms_output.put_line('There is NO VALID course that starts on ' || course_name || '. Try again.');
  END IF;

END;
/

एन.बी. मैंने आपका कोड अपडेट कर दिया है क्योंकि ऐसा प्रतीत होता है कि आपने लूप के लिए कर्सर का उपयोग करने का तरीका गलत समझा है।

  • कर्सर-फॉर-लूप परोक्ष रूप से अपना स्वयं का रिकॉर्ड वैरिएबल बनाते हैं, इसलिए आपको स्वयं को घोषित करने की आवश्यकता नहीं है।
  • आपको कर्सर को स्पष्ट रूप से घोषित करने की भी आवश्यकता नहीं है - यह कर्सर-फॉर-लूप स्टेटमेंट के हिस्से के रूप में किया जा सकता है।
  • मानों का उपयोग करने के लिए आपको कर्सर-फॉर-लूप रिकॉर्ड से समान मानों के साथ एक नया रिकॉर्ड पॉप्युलेट करने की आवश्यकता नहीं है (जब तक आप उन्हें कर्सर-फॉर-लूप के भीतर उपयोग कर रहे हैं, निश्चित रूप से !)


  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. Oracle डेटाबेस में उपयोगकर्ता परिभाषित रिकॉर्ड डेटाटाइप वैरिएबल कैसे बनाएं?

  4. एक चरित्र आधारित ओरेकल फॉर्म को माइग्रेट करना

  5. RefCursor रिटर्न प्रकार के साथ Oracle संग्रहीत कार्यविधि का परीक्षण कैसे करें?