2017-04-21 2 views
0

Ich bekomme diese Warnung in Kröte. so unfähig, das Verfahren zu verwenden. Ich erstelle zuerst eine Varray.Warnung: kompiliert aber mit Kompilierungsfehler in Orakel

CREATE or replace TYPE notif_array AS VARRAY(100000) OF VARCHAR2(10); 

Dann erstelle ich eine Prozedur.

CREATE OR REPLACE PROCEDURE get_notification_id 
    (personrole in varchar2, personid out notif_array) 
is 
begin 
    DBMS_OUTPUT.PUT_LINE(personrole); 

    select person_id into personid 
    from exp_role_person_mapping 
    where person_role = personrole; 
exception 
    when others then 
     personid := null; 
end; 

dann nach, dass ich erhalte von Kröte Warnung

Warning: compiled but with compilation errors 
+0

Fragen Sie die 'user errors' Ansicht, um das eigentliche Problem zu sehen. (Nicht sicher, ob Toad "show errors" unterstützt.) –

+0

@AlexPoole. versucht. Es zeigt "Keine Fehler". –

+0

Bringen Sie den Cursor zur Prozedur und drücken Sie F4, das Popup-Fenster öffnet sich und Sie gelangen auf die Registerkarte Errors. – user75ponic

Antwort

0

Sie müssen die Art und Weise ändern, in der Sie Daten zuordnen PersonId.

Es ist keine Basisdaten, sondern es ist ein Daten benutzerdefinierten Typ wie pro Ihre Anforderung

definiert
CREATE OR REPLACE PROCEDURE get_notification_id(personrole in varchar2,personid out notif_array) 
is 
CURSOR cur_temp(per_role varchar2) 
IS 
    select person_id from exp_role_person_mapping where person_role=per_role; 
    index NUMBER := 1; 
begin 
    DBMS_OUTPUT.PUT_LINE(personrole); 
    FOR datarecord in cur_temp(personrole) 
    LOOP 
     personid(index) := datarecord.person_id; 
     index = index + 1; 
    END LOOP; 
exception when others then 
    personid:=null; 
end; 
0

fügen Sie einfach in select-Anweisung „bulk sammeln“. Danke an Ponder Stibbons

CREATE OR REPLACE PROCEDURE get_notification_id(personrole in varchar2,personid out notif_array) 
is 
begin 
select person_id bulk collect into personid from exp_role_person_mapping where person_role=personrole; 
exception when others then 
personid:=null; 
end; 
Verwandte Themen