pl sql package oracle pl sql package tutorial with examples
PL SQL 패키지, 장점, 사양 및 구조에 대해 알아보십시오.
이 기사에서는 계속해서 PL / SQL 시리즈 . 에서 PL SQL 레코드 튜토리얼에서 프로그래밍 예제를 통해 레코드 및 레코드 유형에 대해 배웠습니다.
여기서는 PL / SQL의 패키지와 패키지의 몇 가지 중요한 기능을 살펴 보겠습니다. 또한 몇 가지 기본 작업에 대해 설명합니다.
PL / SQL 및 하위 프로그램의 dbms_ouput 패키지에 대해서도 설명합니다.
배움부터 시작합시다 !!
학습 내용 :
PL SQL 패키지
패키지는 PL / SQL에서 논리적으로 연결된 항목, 유형 및 하위 프로그램을 분리하는 스키마 형태의 객체입니다. 패키지는 두 부분으로 구성됩니다. 패키지 사양 과 패키지 본문 또는 정의 .
패키지 사양은 응용 프로그램에 대한 인터페이스와 같으며 변수, 상수, 유형, 예외, 커서 및 하위 프로그램을 선언하는 데 사용됩니다. 패키지의 본문은 패키지 사양에 선언 된 하위 프로그램과 커서를 구현합니다.
패키지 사양 (패키지에 대한 인터페이스라고도 함)을 건드리지 않고도 패키지 본문을 업데이트, 디버그 또는 변경할 수 있습니다.
PL / SQL 패키지의 장점
패키지의 장점은 다음과 같습니다.
- 우리 코드에 모듈성을 부여합니다.
- 애플리케이션을 쉽게 디자인하는 데 도움이됩니다.
- PLSQL 패키지는 공개 및 비공개 항목, 데이터 유형 및 하위 프로그램의 도움으로 정보를 숨기는 데 도움이됩니다.
- 패키지를 사용하면 데이터베이스에 저장하지 않고도 모든 트랜잭션에 대한 정보를 유지할 수 있습니다.
- 패키지는 실행 성능을 향상시키는 데 도움이됩니다.
패키지 사양
패키지 사양은 패키지에 대한 인터페이스와 같습니다. 변수, 상수, 유형, 예외, 커서 및 서브 프로그램의 선언을 처리합니다. 따라서 패키지 내용에 대한 모든 세부 정보는 있지만 하위 프로그램의 구현은 없습니다.
패키지 사양 내의 개체는 공용 개체입니다. 패키지 본문 내에 구현 된 모든 하위 프로그램은 개인 개체입니다. 패키지 사양 내에서 여러 전역 변수, 함수 또는 프로 시저를 선언 할 수 있습니다.
패키지 사양은 독립적 인 엔티티이며 패키지 본문없이 존재할 수 있습니다.
코드 구현 :
CREATE PACKAGE citi AS FUNCTION p_strng RETURN VARCHAR2; END citi; /
위 코드의 출력 :
패키지 본체
패키지 본문에는 패키지 사양에 선언 된 커서 및 하위 프로그램의 구현이 포함됩니다. 패키지 본문에 구현 된 하위 프로그램은 패키지 사양에 선언 된 경우 패키지 외부에서 액세스 할 수 있다는 점을 기억해야합니다.
패키지 사양 및 본문에 선언 된 하위 프로그램은 정확해야합니다. 이 비교는 헤더의 토큰별로 수행됩니다. 일치하지 않는 경우 PL / SQL에서 예외가 발생합니다.
패키지 본문에는 패키지 사양에 선언되지 않은 다른 하위 프로그램이 포함될 수 있습니다. 이 경우 해당 패키지 본문에만 해당됩니다. 패키지 바디 생성 패키지 본문을 만드는 데 사용되는 키워드입니다.
패키지 본문을 만드는 예를 들어 보겠습니다. 다른 사람 꾸러미.
패키지 본문을 사용한 코드 구현.
CREATE OR REPLACE PACKAGE BODY citi AS --function implemented FUNCTION p_strng RETURN VARCHAR2 IS BEGIN RETURN 'Software Testing Help!'; END p_strng; END citi; /
위 코드의 출력은 다음과 같아야합니다.
패키지 요소 참조
패키지 사양의 요소를 선언하고 패키지 본문에서 구현 한 것처럼 이러한 요소를 참조해야합니다. 패키지 요소는 함수, 프로 시저 및 변수로 구성됩니다.
패키지의 이러한 공용 요소는 점 (.) 표기법으로 구분 된 패키지 이름 다음에 오는 요소 이름으로 액세스 할 수 있습니다.
통사론:
package_name.element_name;
요소 액세스를위한 코딩 구현 :
BEGIN DBMS_OUTPUT.PUT_LINE (citi.p_strng); END;
위 코드의 출력 :
PL SQL 패키지 생성
패키지가 세션에서 호출되거나 참조되면 해당 패키지의 새 인스턴스가 PL / SQL에서 생성됩니다. 패키지 초기화 코드 블록을 사용하여 인스턴스 생성 중에 패키지 요소를 초기화하거나 다른 작업을 수행 할 수있는 옵션이 있습니다. 이것은 패키지 요소 초기화 후 패키지 본문 내의 실행 가능한 코드 블록입니다.
패키지 생성 구문 :
CREATE (OR REPLACE) PACKAGE BODY IS BEGIN END
여기서 package_n은 패키지의 이름입니다.
패키지 과부하
비슷한 이름을 가진 패키지 내에 여러 하위 프로그램이있을 수 있습니다. 이 기능은 이기종 데이터 유형이있는 동종 매개 변수를 원할 때 유용합니다. 패키지 내의 오버로딩 개념을 통해 프로그래머는 수행하려는 작업 유형을 명확하게 언급 할 수 있습니다.
프로 시저 오버로딩을 통한 코딩 구현. (생성 된 패키지) :
CREATE PACKAGE overloadingprocedure AS Procedure overl_method (p varchar2); Procedure overl_method (numbr number); END overloadingprocedure; /
위 코드의 출력 :
프로 시저 오버로딩을 통한 코딩 구현. (생성 된 패키지 바디)
CREATE OR REPLACE PACKAGE BODY overloadingprocedure AS --procedure implemented Procedure overl_method (p varchar2) AS BEGIN DBMS_OUTPUT.PUT_LINE ('First Procedure: ' || p); END; --procedure implemented Procedure overl_method (numbr number) AS BEGIN DBMS_OUTPUT.PUT_LINE ('Second Procedure: ' || numbr); END; END; /
위 코드의 출력 :
프로 시저 오버로딩을 통한 코딩 구현. (패키지 절차 참조)
BEGIN overloadingprocedure.overl_method ('Software Testing Help'); overloadingprocedure.overl_method (1); END;
위 코드의 출력 :
PLSQL 패키지 종속성
PL / SQL의 패키지 종속성은 다음과 같습니다.
- 패키지 사양은 독립적 인 ID입니다.
- 패키지 본문은 패키지 사양에 의존합니다.
- 패키지 본문은 개별적으로 만 컴파일 할 수 있습니다. 그러나 패키지 사양이 컴파일되면 본문을 다시 컴파일해야합니다.
- private 요소에 의존하는 패키지 본문 내부의 함수 또는 프로시 저는 private 요소의 선언 후에 구현되어야합니다.
PL SQL에서 패키지를 생성하기위한 지침 :
- 패키지는 나중에 다시 사용할 수 있도록 일반 용어로 작성해야합니다.
- 패키지에서 중복 된 특성을 피하십시오.
- 패키지 사양에는 적절하게 설계된 응용 프로그램의 키가 포함되어 있습니다. 패키지 본문을 만들기 전에 패키지 사양을 완료하십시오.
- 패키지 사양에는 패키지 사용자가 액세스 할 수 있어야하는 항목, 하위 프로그램 및 유형 만 포함되어야합니다. 불필요한 구현 정보가 없어야합니다.
- 패키지 사양에는 제한된 수의 항목이 포함되어야합니다. 패키지 사양을 수정하려면 PL / SQL이 패키지를 참조하는 모든 하위 프로그램을 다시 컴파일해야하므로 코드를 다시 컴파일하는 시간을 절약 할 수 있습니다.
PL / SQL의 패키지 정보
패키지 소스, 하위 프로그램 및 오버로드 된 항목과 같은 모든 관련 세부 정보는 패키지가 생성 된 후 데이터 정의 테이블에 저장됩니다.
데이터 정의 테이블 목록은 다음과 같습니다.
- USER_PROCEDURES : 이 테이블에는 현재 사용자에 대한 오버로드 된 항목, object_id 등과 같은 하위 프로그램 정보가 포함됩니다.
- ALL_PROCEDURES : 이 테이블에는 모든 사용자에 대한 오버로드 된 항목, object_id 등과 같은 하위 프로그램 정보가 포함됩니다.
- USER_SOURCE : 이 테이블에는 현재 사용자의 개체 소스에 대한 정보가 포함되어 있습니다.
- ALL_SOURCE : 이 테이블에는 모든 사용자의 개체 소스에 대한 정보가 포함되어 있습니다.
- ALL_OBJECT : 이 테이블에는 모든 사용자에 대한 creation_date, object_id 및 기타 개체 세부 정보와 같은 패키지에 대한 정보가 포함되어 있습니다.
PL / SQL의 DBMS 출력
DBMS_OUTPUT 패키지를 사용하면 하위 프로그램 및 코드 블록에서 생성 된 PL / SQL 출력을 표시 할 수 있습니다. 이를 통해 코드를 디버깅하고 테스트하고 메시지를 보내는 데 도움이됩니다.
그만큼 put_line 프로시 저는 버퍼에 출력 데이터를 생성합니다. 정보는 다음의 도움으로 표시됩니다. get_line 절차를 수행하거나 SQL * Plus에서 SERVEROUTPUT ON을 구성합니다.
DBMS_OUTPUT 패키지에는 다음 하위 프로그램이 포함되어 있습니다.
Sl 아니. | 이름 | 목적 |
---|---|---|
1 | DBMS_OUTPUT.DISABLE | 메시지 출력을 제한합니다. |
두 | DBMS_OUTPUT.ENABLE (버퍼 IN INTEGER DEFAULT 20000) | 메시지 출력을 허용합니다. 버퍼가 NULL로 설정되면 버퍼 크기에 제한이 없음을 나타냅니다. |
삼 | DBMS_OUTPUT.GET_LINE (라인 OUT VARCHAR, 상태 OUT NUMBER) | 한 줄에 버퍼링 된 정보를 가져옵니다. |
4 | DBMS_OUTPUT.NEW_LINE | 라인 끝 마커를 종료합니다. |
5 | DBMS_OUTPUT.PUT (VARCHAR 항목) | 버퍼에 불완전한 줄을 넣습니다. |
6 | DBMS_OUTPUT.PUT_LINE (VARCHAR 항목) | 버퍼에 완전한 라인을 넣습니다. |
코드 구현 :
DECLARE BEGIN DBMS_OUTPUT.PUT_LINE ('Software Testing Help!'); END;
위 코드의 출력 :
자주 묻는 질문과 답변
Q # 1) PL SQL의 패키지는 무엇입니까?
대답: 패키지는 논리적으로 관련된 변수, 상수, 커서, 하위 프로그램 및 유형을 분류하는 개체 스키마입니다.
Q # 2) PL SQL 패키지의 이점은 무엇입니까?
답변 : 패키지의 이점은 다음과 같습니다.
- 패키지를 사용하면 응용 프로그램을 쉽게 설계 할 수 있습니다.
- 패키지를 사용하면 캡슐화를 달성 할 수 있습니다.
- 패키지는 실행 속도 측면에서 더 나은 성능을 얻는 데 도움이됩니다.
- 코드는 패키지로 더욱 모듈화됩니다.
Q # 3) 사양없이 패키지 바디를 생성 할 수 있습니까?
C ++ 함수에 대한 정의되지 않은 참조
대답: 예, 패키지 사양없이 패키지 본문을 만들 수 있습니다.
Q # 4) PL SQL에서 Dbms_output Put_line은 무엇입니까?
대답: dbms_output put_line은 플랫 파일이나 PL / SQL 출력 화면에 정보를 쓸 수있게 해주는 Oracle의 프로 시저입니다.
Q # 5) Dbms_output이란 무엇입니까?
대답: dbms_output은 디버깅 정보를 표시하고 출력하고 하위 프로그램, 트리거, 패키지 및 PL / SQL 코드 블록에서 메시지를 보낼 수있는 기본 패키지입니다.
결론
이 튜토리얼에서는 실제 애플리케이션에서 사용하는 데 필수적인 PL SQL 패키지에 대한 몇 가지 기본 개념을 자세히 설명했습니다.
아래에 나열된 다음 주제를 다루었습니다.
- 패키지 및 구조.
- 패키지의 다양한 기능.
- DBMS 출력.
- DBMS_OUTPUT 패키지의 서브 프로그램.
<< PREV Tutorial | 다음 튜토리얼 >>