0

column3 값을 가진 이라는 사용자 지정 레코드 유형을 만들었습니다. 내가 Table1의 값으로 record_object(i).column3을 비교하려는 테이블/레코드에서 값 가져 오기

OPEN cur_record FOR query; 
BEGIN 
    LOOP 
    FETCH cur_record BULK COLLECT INTO record_object; 
    FOR i IN 1..record_object.count; 
    END LOOP; 
    EXIT WHEN cur_record%notfound; 
    END LOOP; 
END; 

로이 기록은 채워집니다. 이 테이블은 그리 크지 않기 때문에 무언가를 만들려고했다.

TYPE RTable1 IS RECORD 
(
    column1 varchar2(10), 
    column2 varchar2(10) 
); 

Type TTable1 IS TABLE OF RTable1 INDEX BY BINARY_INTEGER; 
record_table1 TTable1; 

이 레코드는 쿼리를 통해 가져 오게된다. 이제는 record_object(i).column3record_table1.column2을 비교하고 싶습니다. 2 중첩 된 루프를 사용하고 싶지 않습니다. 뭔가 구현할 수있는 해시 테이블과 같은 방법이 있습니까 Table1 그 때 record_object(i).column3이 있는지 확인해야합니다, 그 특정 행/인덱스를 반환?

피씨 : 구문 오류는 무시하십시오. 여기에 게시하는 동안 SQL을 작성합니다.

+2

SQL 대신 PL/SQL에서이 작업을 수행하는 이유는 무엇입니까? 분명히 "비교"는 여러 가지 연산을 의미 할 수 있지만 JOIN은 여기에있는 모든 것보다 훨씬 빠를 것입니다. – APC

답변

1

정렬 된 문자열 집합을 반환하도록 쿼리를 수정할 수 있습니다. 두 개의 정렬 된 배열을 비교하면 쉽고 빠릅니다.