2016-07-05 8 views
-1

Der Code hier scheint in Ordnung zu sein. Ich bin diese Ausnahme immer :(bitte korrigieren Sie mich. Ausnahme PLS-00103 und zu scheint richtigAusnahme PLS-00103 erhalten und scheint korrekt zu sein

Der Code, hier zu sein scheint in Ordnung zu sein. Ich bin diese Ausnahme immer :(bitte korrigieren Sie mich. Ausnahme Erste PLS-00103 und scheint nach

OPEN cDiscontinuation 

Nur ein Kommentar auf Stil korrekt

DECLARE 

l_body varchar2(5000); 
l_body_html varchar2(5000); 
l_workspace_id number; 
DiscontinuationEmail varchar2(5000); 
DiscontinuationSubject varchar2(5000); 
Discontinuation varchar2(5000); 
DiscontinuationCC varchar2(5000); 
DiscontinuationReminder number; 

cursor cDiscontinuation is select NETSEC_TEAM.ENGINEER_EMAIL as ENGINEER_EMAIL, 
    NETSEC_TEAM.NETSEC_MGR as NETSEC_MGR 
from NETSEC_TEAM NETSEC_TEAM 
Where NETSEC_TEAM.NETSEC_MGR <> 'ALL' 
MINUS 
select NETSEC_PROCOMPLIANCE_1.EMPLOYEE_EMAIL as EMPLOYEE_EMAIL, 
NETSEC_PROCOMPLIANCE_1.MANAGER_EMAIL as MANAGER_EMAIL 
from NETSEC_PROCOMPLIANCE_1 NETSEC_PROCOMPLIANCE_1 
Where NETSEC_PROCOMPLIANCE_1.DOCUMENT_NAME ='Discontinuation of Daily BI Agent Reports'; 
    -- ****   
    DOD cDiscontinuation%rowtype; 

BEGIN 
    l_workspace_id := apex_util.find_security_group_id (p_workspace => 'CIT-CSCOE-PROD'); 
apex_util.set_security_group_id (p_security_group_id => l_workspace_id);   

    /* *********** Discontinuation ********************** */  

OPEN cDiscontinuation 
Discontinuation :=''; 
DiscontinuationCC :=''; 
DiscontinuationReminder := 1; 

SELECT REMINDER INTO DiscontinuationReminder 
FROM NETSEC_COMPLIANCE_REMINDER WHERE COMPLIANT ='Discontinuation'; 

Loop 
FETCH cDiscontinuation INTO DOD; 
EXIT WHEN cDiscontinuation%NOTFOUND; 
     Discontinuation := Discontinuation || ','|| DOD.ENGINEER_EMAIL; 
     DiscontinuationCC := DiscontinuationCC || ','|| DOD.NETSEC_MGR; 
END LOOP; 
UPDATE NETSEC_COMPLIANCE_REMINDER SET REMINDER = DiscontinuationReminder+1 
WHERE COMPLIANT ='Discontinuation'; 
DiscontinuationReminder := DiscontinuationReminder + 1; 

CLOSE cDiscontinuation; 

DiscontinuationEmail:='TO: '|| Discontinuation ||' <br><br> CC: ' || DiscontinuationCC ||' 

<p>If you are a "To:" recipient of this email, it means that you are not in compliance with the following Network Services team announcement:<br /> 
If you are a "Cc:" recipient of this email, it means that one or more of your employees are not in compliance with the following Network Services team announcement:</p> 

<p><a href="https://apex.oraclecorp.com/pls/apex/f?p=1648:522">Discontinuation of Daily BI Agent Reports</a></p> 

<p>Please click on the link above and acknowledge and confirm your understanding of the process.</p> 

<p>Thank you.</p>'; 

Discontinuation:= '***** NON-COMPLIANT ***** Discontinuation of Daily BI Agent Reports- RELEASE DATE 25 MAY 2016';  

    apex_mail.send(
    p_to  => '[email protected]', 
    p_from  => '[email protected]', 
    p_cc  => '', 
    p_body  => DiscontinuationSubject, 
    p_body_html => DiscontinuationEmail, 
    p_subj  => 'REMINDER #'|| DiscontinuationReminder || ' ' || DiscontinuationSubject, 
     p_bcc => '', 
     p_replyto => NULL 
    );  
END; 
+0

Fügen genaue Fehler Sie bekommen. –

+0

ORA-06550: Zeile 34, Spalte 5: PLS-00103: Das Symbol "DISCONTINUATION" wurde angezeigt, wenn eines der folgenden Ereignisse erwartet wird: . (%, Für Das Symbol ";" wurde für "EINSTELLUNG" substituiert weiterhin 1. Deklarieren 2. 3. l_body varchar2 (5000);. 4. l_body_html varchar2 (5000); 5. l_workspace_id Nummer: –

Antwort

0

Sie verpassen ein Semikolon zu sein: gibt es einen Grund, warum Sie die OPEN von der FETCH getrennt haben? Sie können auch einen CURSOR FOR LOOP verwenden - reinigt nur den Code ein wenig. Also statt:

OPEN cDiscontinuation 
LOOP 
FETCH cDiscontinuation INTO DOD; 
EXIT WHEN cDiscontinuation%NOTFOUND; 
     Discontinuation := Discontinuation || ','|| DOD.ENGINEER_EMAIL; 
     DiscontinuationCC := DiscontinuationCC || ','|| DOD.NETSEC_MGR; 
END LOOP; 

könnten Sie Code

FOR R_discontinuation IN cDiscontinuation LOOP 
    Discontinuation := Discontinuation || ','|| R_discontinuation.ENGINEER_EMAIL; 
    DiscontinuationCC := DiscontinuationCC || ','|| R_discontinuation.NETSEC_MGR; 
END LOOP ; 

In diesem Fall R_discontinuation entspricht exakt DOD im ersten Beispiel (das heißt, cDiscontinuation% ROWTYPE) aber wird implizit deklariert.

die CURSOR FOR-Schleife ist nicht mehr richtig, dass Ihr Ansatz, nur sauberer

+0

Danke Christian, das war der Fehler –

+0

Über deinen Kommentar ... wie geht das? Ich verstehe es nicht .. könntest du mir ein Beispiel geben? –

+0

Danke Christian :) Ich habe verstanden :) –

Verwandte Themen