오라클 커서 예제

Posted by abitou on Αυγ 02, 2019

커서를 닫으면 오라클은 적절한 시기에 할당된 메모리를 해제하도록 지시합니다. 커서의 주요 기능은 한 번에 결과 집합의 모든 행에서 작동하는 SQL 명령과 달리 결과 집합에서 한 번에 한 행의 데이터를 검색하는 것입니다. 커서는 사용자가 데이터베이스 테이블에서 단일 방식으로 또는 행 방식으로 레코드를 업데이트해야 하는 경우에 사용됩니다. 커서에 저장된 데이터를 활성 데이터 집합이라고 합니다. Oracle DBMS에는 커서가 열리는 주 메모리 집합에 미리 정의된 또 다른 영역이 있습니다. 따라서 커서의 크기는 미리 정의된 영역의 크기에 의해 제한됩니다. 쿼리에서 행을 식별하지 않으면 Oracle Database에서 NO_DATA_FOUND를 발생시키지 않습니다. 대신 cursor_name%NOTFOUND 특성이 TRUE를 반환합니다. 무엇보다도 오라클 데이터베이스는 커서 FOR 루프를 자동으로 최적화하여 BULK COLLECT 쿼리와 유사하게 수행합니다(Oracle Magazine 2012년 9월/10월호에서 «BULK COLLECT 및 FORALL을 사용하여 대량 처리»에서 다루어집니다). 따라서 코드가 한 번에 하나의 행을 가져오는 것처럼 보이지만 Oracle Database는 실제로 한 번에 100개의 행을 가져오고 각 행을 개별적으로 작업할 수 있도록 합니다. 각 PL/SQL 101 문서에서는 제공된 정보에 대한 지식을 테스트하는 퀴즈를 제공합니다. 이 퀴즈는 PL/SQL 언어와 SQL 및 Oracle 애플리케이션 익스프레스에 대한 온라인 퀴즈를 제공하는 웹 사이트인 PL/SQL 챌린지에도 표시됩니다. Oracle 데이터베이스로 작업하는 경우 SELECT 문에서 반환된 전체 행 집합으로 작업합니다.

그러나 경우에 따라 응용 프로그램이 전체 결과 집합에서 효과적으로 작동할 수 없으므로 데이터베이스 서버는 응용 프로그램이 한 번에 한 행 또는 결과 집합의 하위 집합으로 작업할 수 있는 메커니즘을 제공해야 합니다. 그 결과 오라클은 이러한 확장을 제공하기 위해 PL/SQL 커서를 만들었습니다. Oracle PL/SQL 언어의 핵심 목적은 데이터베이스의 테이블 내용을 쿼리하고 변경하는 것이 가능한 한 쉽고 효율적으로 만드는 것입니다. 물론 SQL 언어를 사용하여 테이블에 액세스해야 하며, 이렇게 할 때마다 커서를 사용하여 작업을 완료해야 합니다. 커서는 SELECT 또는 DML(데이터 조작 언어) 문(INSERT, UPDATE, DELETE 또는 MERGE)의 처리에 대한 정보를 저장하는 개인 SQL 영역에 대한 포인터입니다. DML 문의 커서 관리는 Oracle Database에서 처리하지만 PL/SQL은 SELECT 문을 실행하기 위해 커서를 정의하고 조작하는 여러 가지 방법을 제공합니다. 이 문서에서는 프로그래머가 PL/SQL에서 SELECT 문을 실행하는 가장 일반적인 방법, 즉 패키지 기반 커서를 명시적으로 닫아야 합니다. 열지 않은 커서를 닫으면 오라클에서 INVALID_CURSOR 예외가 발생합니다. 오라클은 SQL 문을 실행하는 실행 주기를 정의하고 커서를 연결합니다.

다음 그림에서는 명시적 커서의 실행 주기를 보여 주며 예 1: 이 예제에서는 커서-FOR 루프를 사용 하 여 emp 테이블에서 모든 직원 이름을 프로젝션 합니다. 커서가 패키지가 아닌 선언 섹션에서 선언되면 Oracle Database는 커서가 선언된 블록이 종료될 때 자동으로 커서를 닫습니다. 그러나 커서를 명시적으로 닫는 것이 좋습니다. 커서가 패키지로 이동되면 이제 필요한 CLOSE가 이미 배치됩니다. 그리고 로컬인 경우 CLOSE 문을 포함하면 다른 개발자와 관리자에게 주의를 기울이고 있음을 보여 줍니다.

Comments are closed.

Ο καιρός

ar8ra

advertisement