독립형 서브 프로그램 생성 및 관리

독립형 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를 사용합니다.

프로시저 생성 툴을 사용하여 독립형 프로시저를 생성하는 단계는 다음과 같습니다.

  1. Connections(연결) 프레임에서 hr_conn을 확장합니다.

  2. 스키마 객체 유형 목록에서 절차를 마우스 오른쪽 단추로 누릅니다.

  3. 선택 항목 목록에서 새 프로시저를 누릅니다.

    Create Procedure window가 열립니다.

  4. [스키마]에 대해 기본값 HR을 사용합니다.

  5. Name에 PROCEDURE1을 ADD_EVALUATION으로 변경합니다.

  6. 매개변수 추가 아이콘을 누릅니다.

    열 머리글 아래에 행이 나타납니다. 필드의 기본값은 Name, PARAM1, Mode, IN, No Copy, 선택 해제됨, Data Type, VARCHAR2, Default Value, empty입니다.

  7. Name으로 PARAM1을 EVALUATION_ID로 변경합니다.

  8. [모드]에서 기본값인 IN을 적용합니다.

  9. 데이터 유형의 경우 메뉴에서 NUMBER를 선택합니다.

  10. [기본값]을 그대로 비워 둡니다.

  11. 이름 EMPLOYEE_ID 및 데이터 유형 NUMBER로 단계 6에서 10을 반복하여 두번째 매개변수를 추가하십시오.

  12. 610단계를 반복하여 세번째 매개변수를 추가합니다(이름 EVALUATION_DATE 및 데이터 유형 DATE).

  13. 이름 JOB_ID 및 데이터 유형 VARCHAR2로 단계 610을 반복하여 네번째 매개변수를 추가하십시오.

  14. 이름이 MANAGER_ID이고 데이터 유형이 NUMBER인 610단계를 반복하여 다섯번째 매개 변수를 추가합니다.

  15. DEPARTMENT_ID 및 [데이터 유형 번호]로 단계 610을 반복하여 여섯번째 매개변수를 추가합니다.

  16. 이름 TOTAL_SCORE 및 데이터 유형 NUMBER로 단계 6 ~ 10을 반복하여 일곱번째 매개변수를 추가합니다.

  17. 확인을 누릅니다.

    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 문만 포함되어 있으므로 프로시저는 아무 작업도 수행하지 않습니다.

  18. 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
    );
    

    매개변수 이름을 프로시저 이름으로 한정하면 같은 이름의 열과 충돌하지 않습니다.

  19. [파일] 메뉴에서 저장을 선택합니다.

프로시저가 컴파일되고 저장됩니다. ADD_EVALUATION 창의 제목이 더 이상 기울임꼴 글꼴로 표시되지 않는 경우 Message - Log 창에는 Compiled 메시지가 표시됩니다.

참조:

자습서: 독립형 함수 생성

이 자습서에서는 함수 생성 툴을 사용하여 세 개의 매개변수가 있는 CALCULATE_SCORE라는 독립형 함수를 생성하고 NUMBER 유형의 값을 반환하는 방법을 보여 줍니다.

독립형 함수를 생성하려면 SQL Developer 툴 함수 생성이나 DDL 문 CREATE FUNCTION을 사용합니다.

함수 생성 툴을 사용하여 독립형 함수를 생성하는 단계:

  1. Connections(연결) 프레임에서 hr_conn을 확장합니다.

  2. 스키마 객체 유형 목록에서 함수를 마우스 오른쪽 버튼으로 누릅니다.

  3. 선택 항목 목록에서 새 함수를 누릅니다.

    Create Function window가 열립니다.

  4. [스키마]에 대해 기본값 HR을 사용합니다.

  5. Name으로 FUNCTION1을 CALCULATE_SCORE로 변경합니다.

  6. 반환 유형의 경우 메뉴에서 NUMBER를 선택합니다.

  7. 매개변수 추가 아이콘을 누릅니다.

    열 머리글 아래에 행이 나타납니다. 필드의 기본값은 Name, PARAM1, Mode, IN, No Copy, 선택 해제됨, Data Type, VARCHAR2, Default Value, empty입니다.

  8. Name으로 PARAM1을 cat로 변경합니다.

  9. [모드]에서 기본값인 IN을 적용합니다.

  10. Data Type에 대해 기본값 VARCHAR2를 적용합니다.

  11. [기본값]을 그대로 비워 둡니다.

  12. 이름 score 및 데이터 유형 NUMBER로 단계 711을 반복하여 두번째 매개변수를 추가하십시오.

  13. 711단계를 반복하여 세번째 매개변수를 추가합니다(이름 weight 및 데이터 유형 번호).

  14. 확인을 누릅니다.

    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 명령문이므로 이 함수는 아무 작업도 수행되지 않습니다.

  15. NULL을 score * weight로 바꿉니다.

  16. [파일] 메뉴에서 저장을 선택합니다.

    Oracle 데이터베이스에서 함수를 컴파일하고 저장합니다. CALCULATE_SCORE 창의 제목은 더 이상 기울임꼴이 없습니다. Message - Log 창에는 Compiled 메시지가 표시됩니다.

참조:

독립형 서브 프로그램 변경

독립형 서브 프로그램을 변경하려면 SQL Developer 툴 편집이나 DDL 문 ALTER PROCEDURE 또는 ALTER FUNCTION을 사용합니다.

Edit 도구를 사용하여 독립형 서브 프로그램을 변경하는 단계:

  1. Connections(연결) 프레임에서 hr_conn을 확장합니다.

  2. 스키마 객체 유형 목록에서 함수 또는 절차를 확장합니다.

    함수 또는 프로시저 목록이 나타납니다.

  3. 변경할 함수 또는 프로시저를 누릅니다.

    [접속] 프레임 오른쪽에 프레임이 나타납니다. 프레임의 상단 탭에 변경할 하위 프로그램의 이름이 있고 Code 창은 서브 프로그램을 생성한 코드를 보여줍니다.

    코드 창이 쓰기 모드에 있습니다. 연필 아이콘을 누르면 모드가 쓰기 모드에서 읽기 전용 또는 반대로 전환됩니다.

  4. 코드 창에서 코드를 변경하십시오.

    창 제목이 기울임꼴로 변경됩니다. 기울임꼴은 변경 사항이 데이터베이스에 아직 저장되지 않았음을 나타냅니다.

  5. [파일] 메뉴에서 저장을 선택합니다.

    Oracle 데이터베이스에서 하위 프로그램을 컴파일하고 저장합니다. 창의 제목이 더 이상 기울임 글꼴로 표시되지 않습니다. Message - Log 창에는 Compiled 메시지가 표시됩니다.

참조:

자습서: 독립형 함수 테스트

이 자습서에서는 SQL Developer 툴 실행을 사용하여 독립형 함수 CALCULATE_SCORE를 테스트하는 방법을 보여 줍니다.

Run 툴을 사용하여 CALCULATE_SCORE 함수를 테스트하는 단계:

  1. Connections(연결) 프레임에서 hr_conn을 확장합니다.

  2. 스키마 객체 유형 목록에서 함수를 확장합니다.

  3. 함수 목록에서 CALCULATE_SCORE를 마우스 오른쪽 버튼으로 누릅니다.

  4. 선택 항목 목록에서 실행을 누릅니다.

    [PL/SQL 실행] 창이 열립니다. 이 창의 [PL/SQL 블록] 프레임에는 다음 코드가 포함되어 있습니다.

     v_Return := CALCULATE_SCORE (
         CAT => CAT,
         SCORE => SCORE,
         WEIGHT => WEIGHT
       );
    
  5. 다음과 같이 SCORE 및 WEIGHT 값을 각각 80.2로 변경합니다.

     v_Return := CALCULATE_SCORE (
         CAT => CAT,
         SCORE => 8,
         WEIGHT => 0.2
       );
    
  6. 확인을 누릅니다.

    Code(코드) 창 아래에서 Running(실행 중) 창이 열리고 다음 결과가 표시됩니다.

     Connecting to the database hr_conn.
     Process exited.
     Disconnecting from the database hr_conn.
    

    실행 탭 오른쪽에는 출력 변수 탭이 있습니다.

  7. 출력 변수 탭을 누릅니다.

    값 <반환 값> 및 1.6을 각각 포함하는 변수 및 값이라는 두 프레임이 나타납니다.

참조: Oracle SQL Developer User's Guide에서 SQL Developer를 사용하여 프로시저 및 함수를 실행하고 디버그하는 방법에 대한 정보를 확인할 수 있습니다.

독립형 서브 프로그램 삭제

독립형 서브 프로그램을 삭제하려면 SQL Developer Connections 프레임 및 삭제 툴이나 DDL 문 DROP PROCEDURE 또는 DROP FUNCTION을 사용합니다.

주의: ADD_EVALUATION 프로시저 또는 CALCULATE_SCORE 함수는 삭제하지 마십시오. 이후 자습서에서는 이 프로시저가 필요합니다. 서브 프로그램 삭제를 연습하려면 간단한 프로그램을 생성한 다음 삭제합니다.

삭제 툴을 사용하여 독립형 하위 프로그램을 삭제하는 단계:

  1. Connections(연결) 프레임에서 hr_conn을 확장합니다.

  2. 스키마 객체 유형 목록에서 함수 또는 절차를 확장합니다.

  3. 함수 또는 프로시저 리스트에서 삭제할 함수 또는 프로시저의 이름을 마우스 오른쪽 버튼으로 누릅니다.

  4. 선택 항목 목록에서 삭제를 누릅니다.

  5. [삭제] 창에서 적용을 누릅니다.

  6. [확인] 창에서 확인을 누릅니다.

참조: