2016-04-03 3 views
0

Ich bin neu in Oracle SQL Developer Codierung, und jetzt habe ich die Aufgabe, alle Projekte in der Kategorie, die ich einfügen. Ich bekomme entweder "Fehlermeldung: ORA-01403: keine Daten gefunden" oder die Fehlermeldung, wo sie sagen, dass ich zu viele Zeilen habe. Könnte jemand bitte meinen Code ansehen?Fehlermeldung: ORA-01403: keine Daten gefunden

procedure LIST_PROJECTS_PP (--Elaine 
p_catName   IN VARCHAR2  -- required 
) 

IS 
    ex_ERROR    EXCEPTION; 
    ex_errorMsg_txt  VARCHAR(100); 
    v_catName_txt  GG_Projcat.Category_Name%type; 
    v_projstatus_txt  GG_Project.Project_Status%type; 
    v_projtitle_txt  GG_Project.Project_Title%type; 
    v_projorg_txt  GG_Project.Org_ID%type; 
    v_projcount_txt  GG_Project.Country_ISO3166%type; 
    v_projgoal_txt  GG_Project.Project_Goal%type; 
    v_projID_txt   GG_Project.Project_ID%type; 

BEGIN 
    SELECT GG_PROJECT.Project_Title, GG_PROJECT.Project_ID, GG_PROJCAT.Category_Name, GG_PROJECT.Project_Status INTO v_projtitle_txt, v_projID_txt, v_catname_txt, v_projstatus_txt 
    FROM GG_PROJECT, GG_PROJCAT 
    WHERE GG_PROJECT.PROJECT_ID = GG_PROJCAT.PROJECT_ID 
    AND p_catname = category_name 
    AND GG_PROJECT.PROJECT_STATUS = 'active'; 
    COMMIT; 
    DBMS_output.put_line('Project Title: '|| v_projtitle_txt); 

    IF v_catname_txt IS NULL THEN 
    ex_errorMsg_txt := 'Category does not exist'; 
    RAISE ex_ERROR; 
    END IF; 

EXCEPTION 
    WHEN ex_ERROR THEN 
    DBMS_OUTPUT.PUT_LINE (ex_errorMsg_txt); 
    WHEN OTHERS THEN 
    DBMS_OUTPUT.PUT_LINE ('An error occured.') ; 
    DBMS_OUTPUT.PUT_LINE ('Error code: ' || SQLCODE) ; 
    DBMS_OUTPUT.PUT_LINE ('Error message:' || SQLERRM) ; 
END LIST_PROJECTS_PP; 

Antwort

1

Um mehrere Zeilen in einer Prozedur erhalten Sie einen Cursor verwenden müssen:

FOR rec in (SELECT GG_PROJECT.Project_Title, GG_PROJECT.Project_ID, GG_PROJCAT.Category_Name, GG_PROJECT.Project_Status INTO v_projtitle_txt, v_projID_txt, v_catname_txt, v_projstatus_txt 
    FROM GG_PROJECT, GG_PROJCAT 
    WHERE GG_PROJECT.PROJECT_ID = GG_PROJCAT.PROJECT_ID 
AND p_catname = category_name 
AND GG_PROJECT.PROJECT_STATUS = 'active') LOOP 
    DBMS_output.put_line('Project Title: '|| rec.Project_Title); 
end loop; 
Verwandte Themen