2017-12-07 8 views
0

ich diese Schleife verwenden in meinem Verfahren und den E-Mail-IDs in i nehmen, aber wenn ich zu laufen versuche ich keine Daten bin immer Fehler gefunden, so dass ich mag, dass die Werte in i Speicherung überprüfenPLSQL Oracle APEX

Code verwendet:

for i in (select EMAIL 
       into l_user_mail 
       from employee A CONNECT BY PRIOR lower(EMAIL) = lower(MANAGER_EMAIL) 
           START WITH lower(GUID) in (select replace(lower(group_name),'_org_slack') 
                   from dynamic_group where id = '81') 
      ) loop 

    l_user_mail:=l_user_mail || i.EMAIL; 
    end loop; 

wie der Rückgabewert von i in sql Eingabeaufforderung zu überprüfen.

Ich möchte die Werte zu sehen bekommen in i

+0

Entfernen Sie die 'in l_user_mail', dass ein erster ist. Nachdem die Schleife beendet ist, können Sie den Wert von l_user_mail einfach dbms_output eingeben. Oder, stattdessen, können Sie die EMAIL-Spalte verketten, indem Sie die eingebaute Funktion listagg als 'select listagg (email, '') from ...' - nein pl/sql, keine Schleifen (keine expliziten Schleifen das ist) verwenden. – g00dy

Antwort

0

ich will immer die Werte, um zu sehen in i

Ihre FOR LOOP Syntax nicht korrekt ist. INTO Klausel sollte nicht in For Loop verwendet werden. Sehen Sie unten, wie Sie das tun können.

FOR I IN 
      (SELECT  EMAIL 
       FROM EMPLOYEE A 
      CONNECT BY PRIOR LOWER (EMAIL) = LOWER (MANAGER_EMAIL) 
      START WITH LOWER (GUID) IN (
          SELECT REPLACE (LOWER (GROUP_NAME), '_org_slack') 
           FROM DYNAMIC_GROUP 
           WHERE ID = '81')) 
    LOOP 
      -- l_user_mail:=:P60_IDP_GROUPS; 
      L_USER_MAIL := L_USER_MAIL || I.EMAIL; 
      -- To display value of I 
      DBMS_OUTPUT.PUT_LINE (I.EMAIL); 
    END LOOP; 

Demo:

SQL> DECLARE 
    2  L_USER_MAIL     VARCHAR2 (10); 
    3 BEGIN 
    4  FOR I IN (SELECT  LEVEL 
    5      FROM DUAL 
    6     CONNECT BY LEVEL < 10) 
    7  LOOP 
    8   -- l_user_mail:=:P60_IDP_GROUPS; 
    9   L_USER_MAIL := L_USER_MAIL || I.level; 
10   DBMS_OUTPUT.PUT_LINE (I.level); 
11  END LOOP; 
12 END; 
13/
1 
2 
3 
4 
5 
6 
7 
8 
9 

PL/SQL procedure successfully completed. 
+0

Vielen Dank für Ihre schnelle Antwort, ich habe den Code, wie Sie vorgeschlagen, immer noch bekomme ich keine Daten gefunden "Fehler beim Senden einer Bot-Nachricht ORA-01403: keine Daten gefunden" ist es möglich, die Werte zu überprüfen in speichern I – Abinnaya

+0

@Abinnaya Können Sie überprüfen, ob Sie tatsächlich Zeilen zurückgeben abfragen. Führen Sie die Query Standalone aus und überprüfen Sie, ob tatsächlich Datensätze abgerufen werden. – XING

+0

ja meine Select-Abfrage ist Returing-Werte – Abinnaya