2016-09-28 4 views
0

테이블 행을 개별적으로 처리하는 PL/SQL 함수를 작성하고 있습니다. 나는 열쇠를 건네 준다. 해당 행이 처리되었는지 여부를 확인하는 가장 빠른 방법은 무엇입니까? 그렇다면 무시하십시오. 그것은 어리석은 소리가 날지 모르지만 항상 테이블의 모든 행을 처리하려고한다고 가정하십시오 (주로 다른 작업도 수행하기 때문에).행을 '무시'하는 가장 빠른 방법

내가 가진 한 가지 해결책은 해당 테이블에 플래그 열을 작성하는 것이 었습니다. 가장 빠른 방법은 다른 테이블에 레코드를 삽입하고 해당 테이블에 행이 없는지 확인하는 것입니다.

+0

수행해야 할 기능은 무엇입니까? 열을 기준으로 주문을 지정해야합니다. 게시 된 질문은 너무 광범위합니다. 실제로 PL/SQL이 필요하지 않을 수도 있습니다. 샘플 데이터와 예상 결과를 게시하십시오. –

+0

@vkp 내 질문이 업데이트되었습니다. – Mocking

+1

속도에 신경 쓰면 커서를 사용하여 제거하는 방법을 찾으십시오. 귀하의 처리가 커서의 필요성을 시사하지는 않습니다. –

답변

0

PL/SQL 함수를 사용해야 할 필요가 있다고 가정하면 처리해야하는 행 집합 만 전달해야합니다. 즉, 일반 SQL을 사용하여 필요한 테이블에서 행을 선택하고이를 함수에 전달해야합니다. 어쨌든 데이터베이스 환경에서 커서를 사용해야 할 때마다 수행중인 작업을 매우 조심스럽게 살펴 봐야합니다. 실제로 데이터베이스가 최적화되지 않았기 때문입니다.

+1

이것은 답의 시작과 모순되는 점입니다. _ "데이터베이스 환경에서 커서를 사용해야 할 때마다 수행중인 작업을 매우주의 깊게 살펴보십시오. 실제로 데이터베이스가 최적화되지 않았기 때문에"_ . PL/SQL에서 모든 select 문은 커서 (암시 적 또는 명시 적)이므로 커서를 사용하는 것이 PL/SQL에서 처리하는 데 필수적이고 최적의 방법입니다. – user272735

+0

나는 일반적인 SQL 대신 pl/sql을 사용하는 것이 일반적으로 필요 없다는 것을 의미했다. 커서를 사용하여 행별로 결과 세트를 반복하는 것을주의해야합니다. –

+0

프로덕션 인스턴스에서 '일반'sql을 실행할 수 없으며 프로 시저와 함수 만 실행할 수 있습니다. – Mocking

관련 문제