오라클 stored procedure 예제

 

함수 기반 인덱스가 패키지에 종속된 경우 Oracle Database는 인덱스를 DISABLED로 표시합니다. 페칭 루프는 커서 변수를 입력으로 사용하는 새 eval_fetch_control 프로시저의 일부입니다. 이렇게 하면 결과 집합의 처리를 쿼리 정의와 분리하는 추가이 있습니다. 부서 단위가 아니라 회사의 모든 직원에 대한 평가를 시작하는 절차(eval_everyone)를 작성할 수 있습니다. remove_emp 프로시저는 지정된 직원을 제거합니다. 프로시저를 호출할 때 제거할 직원의 employee_id를 지정해야 합니다. 독립 실행형 프로시저 및 함수는 프로그램 논리의 일부를 테스트하는 데 매우 중요하지만 Oracle은 모든 코드를 패키지 안에 배치하는 것이 좋습니다. 패키지는 다른 시스템으로 이식하는 것이 더 쉬우며 패키지 이름으로 프로그램 단위이름을 한정할 수 있는 추가적인 이점이 있습니다. 예를 들어 이전 버전의 Oracle Database에서 continue라는 스키마 수준 프로시저를 개발한 경우 최신 Oracle Database 설치로 이식할 때 코드가 컴파일되지 않습니다. 이는 오라클이 최근 루프의 현재 반복을 종료하고 다음 반복으로 제어를 전송하는 CONTINUE 문을 도입했기 때문입니다. 패키지 내에서 프로시저를 개발한 경우 프로시저 package_name.continue가 이러한 이름 캡처로부터 보호되었을 것입니다.

프로시저 및 함수를 만들기 위한 SQL 문은 각각 CREATE 프로시저 및 CREATE 함수입니다. 실제로 CREATE 또는 replace 문을 사용하는 것이 가장 좋습니다. 이러한 명령문의 일반적인 형태는 다음과 같습니다. emp_eval Body 창의 코드 끝을 향해 eval_loop_control 프로시저를 추가하여 결과 집합에서 개별 레코드를 가져오고 처리합니다. 이 코드의 대부분은 “명시적 커서 사용”의 eval_department 프로시저의 이전 정의에서 나온 것입니다. 새 구조체는 굵은 글꼴로 표시됩니다. 공유 풀의 RAM 메모리에 로드되면 저장된 프로시저가 매우 빠르게 실행됩니다. 저장 프로시저의 적절한 사용에 대한 트릭은 많은 프로시저가 제한된 양의 공유 풀 메모리를 위해 경쟁하기 때문에 풀 스래싱을 방지하는 것입니다. 쿼리와 일치하는 각 직원 레코드에 대한 커서를 사용하여 “패키지 만들기”에서 선언한 프로시저 eval_department를 구현할 수 있습니다. 프로시저 만들기 스크립트가 실행되면 아래 메시지가 사용자에게 반환됩니다. 오류 및 예외 처리에 대한 지침에 대한 Oracle Database PL/SQL 언어 참조 이전 섹션에서스키마 개체인 프로시저 및 함수를 만들고 테스트했습니다.

이 방법은 응용 프로그램의 하위 집합 또는 작은 기능을 테스트하는 데 유용할 수 있습니다. Oracle Database는 프로시저를 저장하기 전에 프로시저를 자동으로 컴파일합니다.