본문 바로가기
IT/Oracle

[Oracle] - 오라클 PL/SQL 프로시저(Procedure)와 함수(Function)의 차이

by 차이나는 개발자 2023. 8. 12.
728x90
반응형

#오라클 프로시저란?

-오라클 프로시저(Oracle Procedure)는 오라클 데이터베이스 내에서 저장되고 실행되는 일련의 SQL 문과 PL/SQL 블록입니다. 데이터베이스 내의 데이터를 조작하거나 특정 작업을 수행하는 데 사용됩니다. 

프로시저는 자주 반복되는 작업을 단순화하고, 데이터베이스의 보안성을 높이며, 데이터베이스의 성능을 향상시키는 데 사용됩니다. 또한, 프로시저는 데이터베이스가 제공하는 다양한 기능을 사용할 수 있도록 합니다.

오라클에서 프로시저를 작성하려면 PL/SQL(Procedural Language extensions to SQL)이라는 프로그래밍 언어를 사용해야 합니다. PL/SQL은 프로시저뿐만 아니라 함수, 트리거 등 다양한 데이터베이스 객체를 작성할 수 있는 언어입니다.

프로시저를 작성하고 실행하려면 오라클 데이터베이스에 접속한 후 SQL*Plus, SQL Developer 등의 도구를 사용하여 PL/SQL 블록을 작성하고 실행할 수 있습니다.

 

 

#오라클 프로시저 기본 문법

-오라클에서 프로시저를 작성하기 위한 기본적인 문법은 다음과 같습니다:

```sql
CREATE [OR REPLACE] PROCEDURE procedure_name
    [ (parameter1 [mode] datatype [, parameter2 [mode] datatype, ...]) ]
IS
    -- 선언부 (Optional)
    declaration_section;

BEGIN
    -- 실행부
    executable_section;
    -- 예외 처리 (Optional)
    exception_section;

END [procedure_name];
/
```

- `CREATE PROCEDURE`: 프로시저를 생성하는 키워드입니다.
- `OR REPLACE` (Optional): 이미 같은 이름의 프로시저가 존재하는 경우, 해당 프로시저를 대체합니다.
- `procedure_name`: 생성하려는 프로시저의 이름입니다.
- `(parameter1 [mode] datatype [, parameter2 [mode] datatype, ...])`: 프로시저의 입력 매개변수를 정의하는 부분입니다. 매개변수는 선택적으로 사용될 수 있으며, 모드와 데이터 타입을 지정할 수 있습니다. 모드는 `IN`, `OUT`, `IN OUT` 중 하나를 선택할 수 있습니다.
- `IS`: 선언부와 실행부를 구분하는 키워드입니다.
- `declaration_section`: 선언부로, 변수, 상수, 커서 등을 선언할 수 있습니다. 이 부분은 선택적으로 사용됩니다.
- `BEGIN`: 실행부의 시작을 나타내는 키워드입니다.
- `executable_section`: 프로시저의 실행 로직이 위치하는 부분입니다.
- `exception_section` (Optional): 예외 처리 부분으로, 예외 상황에 대한 처리를 정의할 수 있습니다.
- `END`: 프로시저의 끝을 나타내는 키워드입니다.
- `procedure_name`: 프로시저의 이름을 다시 명시하여 종료합니다.
- `/`: 프로시저 정의의 마지막을 나타내는 구분자입니다.

프로시저를 작성한 후에는 `CREATE PROCEDURE` 문을 실행하여 프로시저를 데이터베이스에 생성할 수 있습니다. 생성된 프로시저는 다른 오라클 개체에서 호출하여 사용할 수 있습니다.

 

 

#오라클 함수란?

-오라클 함수(Oracle Function)는 오라클 데이터베이스 내에서 값을 반환하는 계산을 수행하는 데 사용되는 PL/SQL 블록입니다. 함수는 특정한 작업을 수행하고 결과 값을 반환하는 데 사용됩니다.

함수는 입력 값을 받아들이고, 이를 처리하여 결과 값을 반환합니다. 예를 들어, 숫자를 입력받아 제곱 값을 반환하는 함수를 작성할 수 있습니다. 함수는 호출하는 곳으로 값을 반환하며, 반환된 값을 변수에 할당하거나 다른 함수나 프로시저의 인수로 전달할 수 있습니다.

오라클에서 함수를 작성하려면 PL/SQL(Procedural Language extensions to SQL)이라는 프로그래밍 언어를 사용해야 합니다. PL/SQL은 오라클에서 제공하는 저장 프로그램 언어로, 데이터베이스 객체를 작성하고 실행하는 데 사용됩니다. 함수는 PL/SQL 블록 내에서 정의되며, 필요한 계산이나 작업을 수행한 후 결과 값을 반환합니다.

함수를 작성하고 실행하려면 오라클 데이터베이스에 접속한 후 SQL*Plus, SQL Developer 등의 도구를 사용하여 PL/SQL 블록을 작성하고 실행할 수 있습니다.

 

 

#오라클 함수 기본 문법

오라클에서 함수를 작성하기 위한 기본적인 문법은 다음과 같습니다:

```sql
CREATE [OR REPLACE] FUNCTION function_name
    [ (parameter1 [mode] datatype [, parameter2 [mode] datatype, ...]) ]
    RETURN return_datatype
IS
    -- 선언부 (Optional)
    declaration_section;

BEGIN
    -- 실행부
    executable_section;
    -- 예외 처리 (Optional)
    exception_section;

END [function_name];
/
```

- `CREATE FUNCTION`: 함수를 생성하는 키워드입니다.
- `OR REPLACE` (Optional): 이미 같은 이름의 함수가 존재하는 경우, 해당 함수를 대체합니다.
- `function_name`: 생성하려는 함수의 이름입니다.
- `(parameter1 [mode] datatype [, parameter2 [mode] datatype, ...])`: 함수의 입력 매개변수를 정의하는 부분입니다. 매개변수는 선택적으로 사용될 수 있으며, 모드와 데이터 타입을 지정할 수 있습니다. 모드는 `IN`, `OUT`, `IN OUT` 중 하나를 선택할 수 있습니다.
- `RETURN return_datatype`: 함수의 반환값 데이터 타입을 정의하는 부분입니다.
- `IS`: 선언부와 실행부를 구분하는 키워드입니다.
- `declaration_section`: 선언부로, 변수, 상수, 커서 등을 선언할 수 있습니다. 이 부분은 선택적으로 사용됩니다.
- `BEGIN`: 실행부의 시작을 나타내는 키워드입니다.
- `executable_section`: 함수의 실행 로직이 위치하는 부분입니다.
- `exception_section` (Optional): 예외 처리 부분으로, 예외 상황에 대한 처리를 정의할 수 있습니다.
- `END`: 함수의 끝을 나타내는 키워드입니다.
- `function_name`: 함수의 이름을 다시 명시하여 종료합니다.
- `/`: 함수 정의의 마지막을 나타내는 구분자입니다.

함수를 작성한 후에는 `CREATE FUNCTION` 문을 실행하여 함수를 데이터베이스에 생성할 수 있습니다. 생성된 함수는 SQL 문에서 호출하여 사용할 수 있습니다. 예를 들어, `SELECT function_name(param1, param2)`와 같은 방식으로 함수를 호출할 수 있습니다.

 

 

#오라클 프로시저와 함수의 차이

-오라클에서 프로시저(Procedure)와 함수(Function)는 서로 다른 목적과 특징을 가지고 있습니다.

1. 반환 값의 유무:
- 프로시저: 프로시저는 값을 반환하지 않습니다. 주로 데이터베이스의 상태를 변경하거나 특정 작업을 수행하는 데 사용됩니다.
- 함수: 함수는 값을 반환합니다. 입력 값을 처리하여 결과 값을 반환하며, 반환된 값을 변수에 할당하거나 다른 함수나 프로시저의 인수로 전달할 수 있습니다.

2. 사용 가능한 문맥:
- 프로시저: 프로시저는 SELECT 문에서 사용할 수 없습니다. 주로 DML 문장(INSERT, UPDATE, DELETE)에서 호출되어 데이터베이스의 상태를 변경합니다.
- 함수: 함수는 SELECT 문에서 사용할 수 있습니다. 반환된 값을 쿼리 결과로 활용할 수 있습니다.

3. 호출 방식:
- 프로시저: 프로시저는 다른 프로시저나 트리거, 응용 프로그램에서 CALL 문을 사용하여 명시적으로 호출됩니다.
- 함수: 함수는 SELECT 문이나 다른 함수에서 호출될 수 있습니다. 함수 호출은 일반적으로 SQL 문장 내에서 수행됩니다.

4. 매개변수 전달:
- 프로시저: 프로시저는 입력, 출력 또는 입력 및 출력을 위한 매개변수를 사용할 수 있습니다. 프로시저 내에서 매개변수를 조작하거나 변경할 수 있습니다.
- 함수: 함수는 입력 매개변수를 사용하여 값을 받아들이고, 계산에 사용한 후 결과 값을 반환합니다. 출력 매개변수를 사용할 수 없습니다.

프로시저와 함수는 각각 자신이 유용하게 사용될 수 있는 경우가 있으므로, 필요에 따라 적절한 방식으로 사용하면 됩니다.다.

 

 

 

728x90
반응형

댓글