저장함수는 저장 프로시저와 거의 유사한 용도로 사용한다.
차이점은 반환값이 있느냐 없느냐에 있다.( 저장 함수는 실행 결과를 되돌려 받을 수 있다.)
저장함수를 만드는 기본 형식
CREATE [OR REPLACE] FUNCTION function_name
[(parameter1 [IN | OUT | IN OUT] datatype [,parameter2 [IN | OUT | IN OUT] datatype, ...])]
RETURN return_datatype
IS
declaration_section
BEGIN
executable_section
[EXCEPTION
exception_section]
END [function_name];
/
여기서 CREATE [OR REPLACE] FUNCTION 은 함수를 생성하거나 교체할 때 사용되는 키워드입니다.
function_name 은 함수의 이름이며,
parameter1, parameter2 등은 함수의 매개 변수입니다.
매개 변수는 선택적으로 IN, OUT, IN OUT 중 하나로 지정할 수 있으며, 데이터 유형을 따릅니다.
RETURN 키워드 뒤에 나오는 return_datatype 은 함수가 반환하는 값의 데이터 유형입니다.
IS 키워드 다음에는 변수나 상수의 선언이나, 실행부문이 포함될 수 있는 선언 구역(Declaration Section)이 옵니다.
BEGIN 키워드 이후에는 함수의 실행부문(Executable Section)이 위치하며,
반환 값을 결정하는 구문이 포함되어야 합니다.
EXCEPTION 섹션은 오류 처리 관련 코드를 작성할 때 사용됩니다.
코드 실행 중에 예외가 발생하면 이 부분에 작성된 코드가 실행됩니다.
END 키워드 뒤에는 저장 함수의 이름을 다시 한 번 명시합니다. 저장 함수를 작성할 때는 함수의 반환 값에 해당하는 데이터 유형과 실제 반환되는 값이 일치해야 합니다.
*******
PL/SQL에서 프로시저와 함수는 모두 코드 블록을 나타내는 PL/SQL 블록입니다. 그러나 두 개의 가장 큰 차이점은 반환 값입니다. 함수는 항상 값을 반환하지만 프로시저는 값을 반환하지 않습니다.
따라서 함수는 일반적으로 값을 반환하기 위해 호출되며, 반환 값을 저장하기 위해 변수에 할당됩니다. 반면 프로시저는 일반적으로 값을 반환하지 않고, 대신 데이터베이스에 영향을 미치는 작업을 수행하기 위해 호출됩니다.
함수 호출은 SELECT 문에서 사용되거나 다른 PL/SQL 코드 블록에서 호출될 수 있습니다. 그러나 프로시저 호출은 일반적으로 트랜잭션의 일부로 사용됩니다.
또한 함수는 일반적으로 값을 반환하기 때문에 반환 데이터 유형을 정의해야 하지만, 프로시저는 반환 값을 갖지 않기 때문에 반환 데이터 유형을 정의할 필요가 없습니다.
'개발공부 > SQL' 카테고리의 다른 글
ORACLE 서브쿼리 (0) | 2023.04.13 |
---|---|
PL/SQL 커서(CURSOR) (6) (0) | 2023.04.12 |
PL/SQL 저장 프로시저(IN, OUT, IN OUT, 바인드 변수) (5) (0) | 2023.04.09 |
PL/SQL 반복문 (4) (0) | 2023.04.06 |
PL/SQL 선택문, 조건문 / DECODE 함수 (3) (0) | 2023.04.06 |