DB & SQL
Oracle Stored Procedure 1장(프로시저 생성 및 저장)
by pms93
2024. 7. 10.
CREATE OR REPLACE PROCEDURE TESTPROCEDURE (
/*
CREATE PROCEDURE
: 새 Procedure를 생성하며 중복된 이름이 존재 할 경우 에러 발생.
CREATE OR REPLACE PROCEDURE
: Procedure를 생성하며 중복된 이름이 존재할 경우 덮어씌운다.
*/
/*
Procedure 호출 시 전달할 파라미터를 선언. IN, OUT, IN OUT 총 3개의 변수를 선언 할 수 있다. 생략할 경우 IN 변수로 선언된다.
IN
: Procedure 호출 시 해당 변수의 값이 초기화 되며 CONST 상수로 값 변경이 불가능하다.
: 호출 시 전달받은 데이터가 없을 경우 default value로 변수를 초기화 하며 생략 가능.
OUT
: Procedure 호출 시 동일한 타입의 변수를 전달해야 한다. Procedure 프로세스 중 값을 변경할 수 있으며 호출 종료 후 해당 변수의 값을 참조 할 수 있다.
: Java로 치면 Call By Reference의 개념과 비슷하다.
: default value 선언 불가
IN OUT
: IN, OUT의 두가지 성질을 띈다. 파라미터로 값을 전달받아 Procedure 프로세스 중 값을 변경할 수 있다.
: default value 선언 불가
변수 타입 지정 시 버퍼 사이즈를 별도로 지정하지 않는다.
*/
v1 IN NVARCHAR2 := 'no Data',
v2 OUT NVARCHAR2,
v3 IN OUT NVARCHAR2
)
AS
/*
변수 선언지역
해당 영역에 선언된 변수는 아래 *익명블록 에서 전역변수 판정
(*익명블록 : 아래 BEGIN END; 의 영역을 익명블록 이라고 한다.)
선언과 동시에 초기화가 가능하다.
*/
i1 INTEGER;
i2 INTEGER := 1;
s1 NVARCHAR2(10);
s2 NVARCHAR2(9000);
BEGIN
/*
익명블록
: 로직이 수행되는 블록이며 scope의 개념을 갖는다.
*/
END;