मैं प्रतिभागियों की उम्र के अनुसार नाम और एक श्रेणी प्रदर्शित करने की कोशिश कर रहा हूँ

     CREATE OR REPLACE PROCEDURE categorie AS
     v_age NUMBER := 1;
     part_info participant%ROWTYPE;

     BEGIN 

     SELECT  *
     INTO part_info
     FROM Participant
     WHERE age > v_age;

     FOR i IN part_info
        IF(part_info.age<=18) THEN
             DBMS_OUTPUT.PUT_LINE('NAME: ' || part_info.nomParticipant  || 'CATEGORIE :  JUNIOR');
      
        ELSIF(part_info.age>=50) THEN
             DBMS_OUTPUT.PUT_LINE('NAME: ' || part_info.nomParticipant  || 'CATEGORIE :  SENIOR');

        ELSE 
             DBMS_OUTPUT.PUT_LINE('NAME: ' || part_info.nomParticipant  || 'CATEGORIE :  MIDDLE');
        END IF;
        END LOOP;
        END; 

मुझे किसकी याद आ रही है ?

त्रुटि है "चेतावनी: संकलन त्रुटियों के साथ बनाई गई प्रक्रिया।"

0
EriicButDrunk 16 फरवरी 2021, 21:44
1
त्रुटि पोस्ट करना सहायक होगा ताकि हमें अनुमान न लगाना पड़े। अगर मुझे अनुमान लगाना होता, तो ऐसा लगता है कि आपके तार ठीक से बंद नहीं हुए हैं। मुझे लगता है कि आप CATEGORIE से पहले और JUNIOR|SENIOR|MIDDLE के बाद एक खुला एकल उद्धरण चाहते हैं और उनके बीच कोई एकल उद्धरण नहीं है।
 – 
Justin Cave
16 फरवरी 2021, 21:48
ओह हाँ, मैंने श्रेणी से पहले एकल उद्धरण को याद किया, मैंने इसे ठीक किया लेकिन यह वही त्रुटि है "चेतावनी: संकलन त्रुटियों के साथ बनाई गई प्रक्रिया।"
 – 
EriicButDrunk
16 फरवरी 2021, 22:03
1
SQL*Plus में, त्रुटियां दिखाने के लिए show errors टाइप करें। या क्वेरी user_errors
 – 
Justin Cave
16 फरवरी 2021, 22:39
आप part_info पर लूप नहीं कर सकते क्योंकि यह कर्सर नहीं है।
 – 
Toru
16 फरवरी 2021, 23:11
हाँ यह एक लूप समस्या थी आपकी मदद के लिए आप सभी को धन्यवाद।
 – 
EriicButDrunk
16 फरवरी 2021, 23:37

1 उत्तर

सबसे बढ़िया उत्तर

सबसे पहले, कोड में ओपनिंग LOOP गायब है, और इस तथ्य के कारण त्रुटि उत्पन्न होती है। नतीजतन, आप अकेले SELECT स्टेटमेंट के बजाय एक कर्सर का उपयोग करना चाहते हैं, फिर part_info क्वालिफायर को LOOP के भीतर i से बदलें:

SQL> SET SERVEROUTPUT ON
SQL> CREATE OR REPLACE PROCEDURE categorie AS
     v_age  INT := 1;

     CURSOR part_info IS
     SELECT *      
       FROM Participant
      WHERE age > v_age;
BEGIN
   FOR i IN part_info
   LOOP     
        IF   i.age  <= 18  THEN
             DBMS_OUTPUT.PUT_LINE('NAME: ' || i.nomParticipant  || '  CATEGORIE :  JUNIOR');      
        ELSIF i.age >= 50 THEN
             DBMS_OUTPUT.PUT_LINE('NAME: ' || i.nomParticipant  || '  CATEGORIE :  SENIOR');
        ELSE
             DBMS_OUTPUT.PUT_LINE('NAME: ' || i.nomParticipant  || '  CATEGORIE :  MIDDLE');
        END IF;
   END LOOP;     
END;
/
0
Barbaros Özhan 16 फरवरी 2021, 23:11
आपका स्वागत है @EriicbutDrunk मदद करने के लिए अच्छा है
 – 
Barbaros Özhan
17 फरवरी 2021, 00:13