독립형 서브 프로그램 생성 및 관리
독립형 PL/SQL 서브 프로그램을 생성하고 관리할 수 있습니다.
주: 이 문서의 자습서를 수행하려면 SQL Developer에서 사용자 HR로 Oracle Database에 접속되어 있어야 합니다.
하위 프로그램 구조 정보
서브 프로그램은 PL/SQL 블록 구조를 따릅니다. 즉, 다음을 포함합니다.
-
선언 부분(선택 사항)
선언 부분에는 유형, 상수, 변수, 예외, 선언된 커서 및 중첩 하위 프로그램의 선언이 포함되어 있습니다. 이러한 항목은 하위 프로그램에 로컬이며 하위 프로그램 실행이 완료되면 소멸됩니다.
-
실행 부분(필수)
실행 부분에는 값을 지정하고, 실행을 제어하고, 데이터를 조작하는 명령문이 포함됩니다.
-
예외 처리 부분(선택 사항)
예외 처리 부분에는 예외(런타임 오류)를 처리하는 코드를 포함합니다.
설명은 PL/SQL 코드의 모든 곳에 나타날 수 있습니다. PL/SQL 컴파일러는 설명을 무시합니다. 프로그램에 설명을 추가하면 가독성이 좋아지고 이해하는 데 도움이 됩니다. 단일 행 설명은 이중 하이픈(--)으로 시작하며 행 끝까지 확장됩니다. 여러 라인 설명은 슬래시와 별 표(/*)로 시작하며 별표과 슬래시(*/)로 끝납니다.
프로시저의 구조는 다음과 같습니다.
PROCEDURE name [ ( parameter_list ) ]
{ IS | AS }
[ declarative_part ]
BEGIN -- executable part begins
statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
otherwise, executable part ends */
함수의 구조는 프로시저의 구조과 같지만, RETURN 절과 하나 이상의 RETURN 문 및 몇 가지 선택적 절(이 문서에서 다루지 않음)을 포함한다는 점만 차이가 있습니다.
FUNCTION name [ ( parameter_list ) ] RETURN data_type [ clauses ]
{ IS | AS }
[ declarative_part ]
BEGIN -- executable part begins
-- at least one statement must be a RETURN statement
statement; [ statement; ]...
[ EXCEPTION -- executable part ends, exception-handling part begins]
exception_handler; [ exception_handler; ]... ]
END; /* exception-handling part ends if it exists;
otherwise, executable part ends */
PROCEDURE 또는 FUNCTION으로 시작되고 IS 또는 AS 앞에서 끝나는 코드는 하위 프로그램 서명입니다. 선언, 실행 및 예외 처리 부분이 하위 프로그램 본문을 구성합니다. 예외 처리기의 구문은 "예외 및 예외 처리기 정보"에 있습니다.
참조: Oracle Database PL/SQL Language Reference에서 하위 프로그램 부분에 대한 자세한 내용을 참조하십시오.
자습서: 독립형 프로시저 생성
이 자습서에서는 프로시저 생성 도구를 사용하여 EVALUATIONS 테이블에 행을 추가하는 ADD_EVALUATION이라는 독립형 프로시저를 생성하는 방법을 보여 줍니다.
EVALUATIONS 테이블은 Example 4-1에서 만들어졌습니다.
독립형 프로시저를 생성하려면 SQL Developer 툴 프로시저 생성이나 DDL 문 CREATE PROCEDURE를 사용합니다.
프로시저 생성 툴을 사용하여 독립형 프로시저를 생성하는 단계는 다음과 같습니다.
-
Connections(연결) 프레임에서 hr_conn을 확장합니다.
-
스키마 객체 유형 목록에서 절차를 마우스 오른쪽 단추로 누릅니다.
-
선택 항목 목록에서 새 프로시저를 누릅니다.
Create Procedure window가 열립니다.
-
[스키마]에 대해 기본값 HR을 사용합니다.
-
Name에 PROCEDURE1을
ADD_EVALUATION으로 변경합니다. -
매개변수 추가 아이콘을 누릅니다.
열 머리글 아래에 행이 나타납니다. 필드의 기본값은 Name, PARAM1, Mode, IN, No Copy, 선택 해제됨, Data Type, VARCHAR2, Default Value, empty입니다.
-
Name으로 PARAM1을
EVALUATION_ID로 변경합니다. -
[모드]에서 기본값인 IN을 적용합니다.
-
데이터 유형의 경우 메뉴에서 NUMBER를 선택합니다.
-
[기본값]을 그대로 비워 둡니다.
-
이름
EMPLOYEE_ID및 데이터 유형 NUMBER로 단계 6에서 10을 반복하여 두번째 매개변수를 추가하십시오. -
6 및 10단계를 반복하여 세번째 매개변수를 추가합니다(이름
EVALUATION_DATE및 데이터 유형 DATE). -
이름
JOB_ID및 데이터 유형 VARCHAR2로 단계 6 및 10을 반복하여 네번째 매개변수를 추가하십시오. -
이름이
MANAGER_ID이고 데이터 유형이 NUMBER인 6 및 10단계를 반복하여 다섯번째 매개 변수를 추가합니다. -
DEPARTMENT_ID및 [데이터 유형 번호]로 단계 6 및 10을 반복하여 여섯번째 매개변수를 추가합니다. -
이름
TOTAL_SCORE및 데이터 유형 NUMBER로 단계 6 ~ 10을 반복하여 일곱번째 매개변수를 추가합니다. -
확인을 누릅니다.
CREATE OR REPLACE PROCEDURE ADD_EVALUATION ( EVALUATION_ID IN NUMBER , EMPLOYEE_ID IN NUMBER , EVALUATION_DATE IN DATE , JOB_ID IN VARCHAR2 , MANAGER_ID IN NUMBER , DEPARTMENT_ID IN NUMBER , TOTAL_SCORE IN NUMBER ) AS BEGIN NULL; END ADD_EVALUATION;ADD_EVALUATION 창의 제목이 기울임꼴이면 프로시저가 아직 데이터베이스에 저장되지 않았음을 나타냅니다.
프로시저의 실행 부분에 NULL 문만 포함되어 있으므로 프로시저는 아무 작업도 수행하지 않습니다.
-
NULL 문을 다음 명령문으로 바꿉니다.
INSERT INTO EVALUATIONS ( evaluation_id, employee_id, evaluation_date, job_id, manager_id, department_id, total_score ) VALUES ( ADD_EVALUATION.evaluation_id, ADD_EVALUATION.employee_id, ADD_EVALUATION.evaluation_date, ADD_EVALUATION.job_id, ADD_EVALUATION.manager_id, ADD_EVALUATION.department_id, ADD_EVALUATION.total_score );매개변수 이름을 프로시저 이름으로 한정하면 같은 이름의 열과 충돌하지 않습니다.
-
[파일] 메뉴에서 저장을 선택합니다.
프로시저가 컴파일되고 저장됩니다. ADD_EVALUATION 창의 제목이 더 이상 기울임꼴 글꼴로 표시되지 않는 경우 Message - Log 창에는 Compiled 메시지가 표시됩니다.
참조:
-
SQL Developer를 사용하여 독립형 프로시저를 생성하는 다른 예제는 Oracle SQL Developer User's Guide를 참조하십시오.
-
CREATE PROCEDURE 문에 적용되는 일반 정보에 대한 "DDL(데이터 정의어) 문 정보"
-
Oracle Database PL/SQL Language Reference - CREATE PROCEDURE 문에 대한 자세한 내용
자습서: 독립형 함수 생성
이 자습서에서는 함수 생성 툴을 사용하여 세 개의 매개변수가 있는 CALCULATE_SCORE라는 독립형 함수를 생성하고 NUMBER 유형의 값을 반환하는 방법을 보여 줍니다.
독립형 함수를 생성하려면 SQL Developer 툴 함수 생성이나 DDL 문 CREATE FUNCTION을 사용합니다.
함수 생성 툴을 사용하여 독립형 함수를 생성하는 단계:
-
Connections(연결) 프레임에서 hr_conn을 확장합니다.
-
스키마 객체 유형 목록에서 함수를 마우스 오른쪽 버튼으로 누릅니다.
-
선택 항목 목록에서 새 함수를 누릅니다.
Create Function window가 열립니다.
-
[스키마]에 대해 기본값 HR을 사용합니다.
-
Name으로 FUNCTION1을
CALCULATE_SCORE로 변경합니다. -
반환 유형의 경우 메뉴에서 NUMBER를 선택합니다.
-
매개변수 추가 아이콘을 누릅니다.
열 머리글 아래에 행이 나타납니다. 필드의 기본값은 Name, PARAM1, Mode, IN, No Copy, 선택 해제됨, Data Type, VARCHAR2, Default Value, empty입니다.
-
Name으로 PARAM1을
cat로 변경합니다. -
[모드]에서 기본값인 IN을 적용합니다.
-
Data Type에 대해 기본값 VARCHAR2를 적용합니다.
-
[기본값]을 그대로 비워 둡니다.
-
확인을 누릅니다.
CALCULATE_SCORE 창이 열리고 이 함수를 생성한 CREATE FUNCTION 문이 표시됩니다.
CREATE OR REPLACE FUNCTION CALCULATE_SCORE ( CAT IN VARCHAR2 , SCORE IN NUMBER , WEIGHT IN NUMBER ) RETURN NUMBER AS BEGIN RETURN NULL; END CALCULATE_SCORE;CALCULATE_SCORE 창의 제목이 기울임꼴이면 함수가 아직 데이터베이스에 저장되지 않았음을 나타냅니다.
함수 실행 부분의 명령문은 RETURN NULL 명령문이므로 이 함수는 아무 작업도 수행되지 않습니다.
-
NULL을
score * weight로 바꿉니다. -
[파일] 메뉴에서 저장을 선택합니다.
Oracle 데이터베이스에서 함수를 컴파일하고 저장합니다. CALCULATE_SCORE 창의 제목은 더 이상 기울임꼴이 없습니다. Message - Log 창에는
Compiled메시지가 표시됩니다.
참조:
-
CREATE FUNCTION 문에 적용되는 일반 정보에 대한 "DDL(데이터 정의어) 문 정보"
-
Oracle Database PL/SQL Language Reference - CREATE FUNCTION 문에 대한 정보
독립형 서브 프로그램 변경
독립형 서브 프로그램을 변경하려면 SQL Developer 툴 편집이나 DDL 문 ALTER PROCEDURE 또는 ALTER FUNCTION을 사용합니다.
Edit 도구를 사용하여 독립형 서브 프로그램을 변경하는 단계:
-
Connections(연결) 프레임에서 hr_conn을 확장합니다.
-
스키마 객체 유형 목록에서 함수 또는 절차를 확장합니다.
함수 또는 프로시저 목록이 나타납니다.
-
변경할 함수 또는 프로시저를 누릅니다.
[접속] 프레임 오른쪽에 프레임이 나타납니다. 프레임의 상단 탭에 변경할 하위 프로그램의 이름이 있고 Code 창은 서브 프로그램을 생성한 코드를 보여줍니다.
코드 창이 쓰기 모드에 있습니다. 연필 아이콘을 누르면 모드가 쓰기 모드에서 읽기 전용 또는 반대로 전환됩니다.
-
코드 창에서 코드를 변경하십시오.
창 제목이 기울임꼴로 변경됩니다. 기울임꼴은 변경 사항이 데이터베이스에 아직 저장되지 않았음을 나타냅니다.
-
[파일] 메뉴에서 저장을 선택합니다.
Oracle 데이터베이스에서 하위 프로그램을 컴파일하고 저장합니다. 창의 제목이 더 이상 기울임 글꼴로 표시되지 않습니다. Message - Log 창에는
Compiled메시지가 표시됩니다.
참조:
-
ALTER PROCEDURE 및 ALTER FUNCTION 문에 적용되는 일반 정보는 "DDL(데이터 정의어) 문 정보"를 참조하십시오.
-
Oracle Database PL/SQL Language Reference - ALTER PROCEDURE 문에 대한 자세한 내용
-
ALTER FUNCTION 문에 대한 자세한 내용은 Oracle Database PL/SQL Language Reference를 참조하십시오
자습서: 독립형 함수 테스트
이 자습서에서는 SQL Developer 툴 실행을 사용하여 독립형 함수 CALCULATE_SCORE를 테스트하는 방법을 보여 줍니다.
Run 툴을 사용하여 CALCULATE_SCORE 함수를 테스트하는 단계:
-
Connections(연결) 프레임에서 hr_conn을 확장합니다.
-
스키마 객체 유형 목록에서 함수를 확장합니다.
-
함수 목록에서 CALCULATE_SCORE를 마우스 오른쪽 버튼으로 누릅니다.
-
선택 항목 목록에서 실행을 누릅니다.
[PL/SQL 실행] 창이 열립니다. 이 창의 [PL/SQL 블록] 프레임에는 다음 코드가 포함되어 있습니다.
v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => SCORE, WEIGHT => WEIGHT ); -
다음과 같이 SCORE 및 WEIGHT 값을 각각
8및0.2로 변경합니다.v_Return := CALCULATE_SCORE ( CAT => CAT, SCORE => 8, WEIGHT => 0.2 ); -
확인을 누릅니다.
Code(코드) 창 아래에서 Running(실행 중) 창이 열리고 다음 결과가 표시됩니다.
Connecting to the database hr_conn. Process exited. Disconnecting from the database hr_conn.실행 탭 오른쪽에는 출력 변수 탭이 있습니다.
-
출력 변수 탭을 누릅니다.
값 <반환 값> 및 1.6을 각각 포함하는 변수 및 값이라는 두 프레임이 나타납니다.
참조: Oracle SQL Developer User's Guide에서 SQL Developer를 사용하여 프로시저 및 함수를 실행하고 디버그하는 방법에 대한 정보를 확인할 수 있습니다.
독립형 서브 프로그램 삭제
독립형 서브 프로그램을 삭제하려면 SQL Developer Connections 프레임 및 삭제 툴이나 DDL 문 DROP PROCEDURE 또는 DROP FUNCTION을 사용합니다.
주의: ADD_EVALUATION 프로시저 또는 CALCULATE_SCORE 함수는 삭제하지 마십시오. 이후 자습서에서는 이 프로시저가 필요합니다. 서브 프로그램 삭제를 연습하려면 간단한 프로그램을 생성한 다음 삭제합니다.
삭제 툴을 사용하여 독립형 하위 프로그램을 삭제하는 단계:
-
Connections(연결) 프레임에서 hr_conn을 확장합니다.
-
스키마 객체 유형 목록에서 함수 또는 절차를 확장합니다.
-
함수 또는 프로시저 리스트에서 삭제할 함수 또는 프로시저의 이름을 마우스 오른쪽 버튼으로 누릅니다.
-
선택 항목 목록에서 삭제를 누릅니다.
-
[삭제] 창에서 적용을 누릅니다.
-
[확인] 창에서 확인을 누릅니다.
참조:
-
DROP PROCEDURE 및 DROP FUNCTION 문에 적용되는 일반 정보에 대한 "DDL(데이터 정의어) 문 정보"
-
Oracle Database SQL Language Reference - DROP PROCEDURE 문에 대한 자세한 내용
-
Oracle Database SQL Language Reference - DROP FUNCTION 문에 대한 자세한 내용