2013-06-18 5 views
-1

에서 데이터베이스에 대해 값을 비교 파트를 검색하고 각 파트를 사전과 비교합니다 (에드워드는 사전과 비교되고 앨버트는 사전과 비교됩니다).오라클 PL/SQL은 내가 좋아하는 몇 가지 이름을 가지고 기능

john albert adam gerard 

그것은 반환해야합니다 :

내 문제는 이름이 같은 도착하면 내가 예를 들어, 사전에 존재하지 않는 모든 이름의 연결된 문자열을 반환하고자하는 것입니다

adam gerard 

나는 이런 식으로 그들을 위해 배열에 이름을 넣고 검색 :

select name into name_base from usr_pre_pub.nd where name=names(ix); 

B ut 사전에 이름이 없으면 실행이 중지되고 배열의 다음 이름을 계속 분석하지 않습니다.

john (found) albert(found) adam (not found, exception no data found) gerard (not analysed) 

나는 기능의 일부를 잡기 예외 제거했습니다

exception  
    when no_data_found then 
     return ix; 
    when others then 
    return 'others'; 
     -- consider logging the error and then re-raise 
     raise; 

을하지만 그것은 단지 중지하고 값을 반환하지 않습니다.

여기서부터 어디로 가야할지 모르겠다.

+0

메신저 내가 그 부분의 두꺼비가 자체적으로 추가, 그렇게하는 방법을 잘 모릅니다 없음 (아직) 기능에 대한 전문가 그래서 ... 미안 메신저 같은 멍청한 놈이 .. –

+1

전체 PL/SQL 블록을 제시해주십시오 경우 기타 관련 정보. 또한 실제 no_data_found 오류가 발생하는지 여부를 명확히해야합니다. – Sebas

답변

2

루프 내부에서 예외가 발생하지 않는 것처럼 보입니다. 배열의 각 이름을 반복 할 루프가 있다고 가정하면 루프는 다음과 같이 보일 것입니다.

LOOP 
    BEGIN 
     SELECT name 
     INTO name_base 
     FROM usr_pre_pub.nd 
     WHERE name = names (ix); 
    EXCEPTION 
     WHEN NO_DATA_FOUND 
     THEN 
     --store the name in variable/array for returning, as not found 
     WHEN OTHERS 
     THEN 
     --do something else 
    END; 
END LOOP; 
+0

감사합니다 !! 이제 해결되었습니다. –

관련 문제