Notice
Recent Posts
Recent Comments
Link
반응형
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 알고리즘
- 1lv
- 코딩테스트
- 1레벨
- 참조형
- programmers
- Linux
- toLowerCase
- oracle
- StringBuffer
- SQL
- PARSEINT
- 짝수
- substring
- string
- 문자열
- 배열
- 코테
- 데이터베이스
- Integer
- Math.max
- 도메인
- Java
- 오라클
- 1단계
- 자바
- 1level
- Math.min
- 디비
- 프로그래머스
Archives
- Today
- Total
웹 프로그래밍
프로시저(Procedure), 함수 - ORACLE DB 본문
반응형
프로시저(Procedure)란?
- PL/SQL 문법을 활용하여 일종의 프로그램(함수)를 미리 작성하고, DB에 저장하는 객체
- 재사용성을 높여주고, 사용자가 필요 시 언제든 호출할 수 있는 기능
장점
- 네트워크를 적게 사용하여 DB 성능 향상에 기여할 수 있다.
- 반복, 주기적으로 사용하는 DBA의 명령어를 영구적으로 저장할 수 있다.
- PL/SQL문을 저장하는 객체로 필요할 때 마다 복잡한 구문을 다시 입력할 필요 없이 간단하게 호출 후 실행 결과를 얻을 수 있다
단점
- 개발자 입장에서는 기능이 분산되어 프로그램 관리가 어려워진다.
- 디버깅이 어렵고, 현재 프로그램 상태를 정확히 알 수 없어 관리가 어려워진다.
- 프로시저가 난발되면 DB 성능 저하와 비용이 상승한다.
문법
CREATE PROCEDURE <프로시저명> [매개변수 명 [MODE] <TYPE>]
IS
변수 선언부
BEGIN
실행 내용
END;
/
MODE : IN(데이터 입력, 기본값) / OUT(데이터 반환)
※ 주의 : 매개변수 데이터 타입 크기를 지정하면 안 된다.
프로시저 관련 테이블 조회
SELECT * FROM ALL_PROCEDURES; -- 모든 프로시져 확인
SELECT * FROM ALL_PROCEDURES WHERE OWNER='계정'; -- 특정 계정의 프로시져 확인
SELECT * FROM USER_PROCEDURES; -- 현재 사용자가 생성한 프로시져 목록 확인
SELECT * FROM USER_SOURCE; -- 현재 사용자가 생성한 프로시져 상세 코드 확인
SELECT * FROM USER_SOURCE WHERE NAME = '프로시저명'; -- 특정 프로시져의 상세 코드 확인
프로시저 실행 방법
EXECUTE <프로시저명> [전달값];
EXEC <프로시저명> [전달값];
프로시저 수정 방법
- 별도로 존재하지 않고, CREATE를 통해 재생성하여 관리
- CREATE OR REPLACE문 활용
프로시저 삭제 방법
DROP PROCEDURE '이름';
예제 )
매개변수가 있는 프로시저
CREATE OR REPLACE PROCEDURE TEST_PRO2(N_VALUE NUMBER)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('입력값 : ' || N_VALUE);
END;
/
EXEC TEST_PRO2(100); 결과 : 100
EXEC TEST_PRO2(200.3); 결과 : 200.3
함수(FUNCTION)란?
-프로시저와 거의 유사한 용도로 사용하지만 실행 결과를 되돌려 받을 수 있다는 점에서 프로시저와 다르다.
문법
CREATE OR REPLACE FUNCTION '함수명' [<매개변수명> <데이터 타입, ...>]
RETURN <반환타입>
IS
-- 지역변수
BEGIN
-- 실행할 내용
RETURN 반환값
END;
함수 실행 방법
SELECT TEST_FUNC FROM DUAL;
예제 )
CREATE OR REPLACE FUNCTION TEST_FUNC
RETURN NUMBER
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('함수 1 실행');
RETURN 10;
END ;
/

반응형
'DB(SQL) > oracle' 카테고리의 다른 글
| 상위 데이터 조회(Rownum, Top) - Oracle, Mssql (0) | 2023.02.23 |
|---|---|
| 컬럼 추가, 삭제, 수정, 변경(ALTER) - Oracle (0) | 2023.02.09 |
| 시퀀스(SEQUENCE) - Oracle (0) | 2023.02.05 |
| 트리거(TRIGGER) - ORACLE DB (0) | 2021.09.28 |
| PL/SQL의 기초 및 선언(변수 활용, 조건문, 반복문) - ORACLE DB (0) | 2021.09.28 |