PLSQL Data Type
- SQL Data Type : NUMBER, CHAR, VARCHAR2, DATE, TIMESTAMP
- PLSQL전용 Data Type : BOOLEAN, PLS_INTEGER, BINARY_FLOAT, ...
Dynamic SQL
PLSQL은 Binding이 Compole시에 일어나므로 DB Object의 Name이 Compile시에 고정되어야 하는 등의 제한이 있지만 Dynamic SQL을 사용하면 SQL문을 변수에 정의하여 SQL문의 최종완성을 런타임중에 할 수 있다는 장점이 있다.
추가로 DBMS_SQL Package로 Dynamic SQL문의 사용을 가능하다.
Dynamic SQL을 사용하는 경우
- DDL(Data Definition Language)을 사용하는 경우 → DDL이란 ? DB를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어이다.
- 변수를 이용하여 SQL문장을 동적으로 만들어 내는 경우(검색조건, 정렬조건, 힌트구문 등)
- 컴파일타임에 존재하지 않는 DB Object를 참조하는 경우(테이블의 이름을 동적으로 생성)
- PLSQL블록에서 다른 프로시저(Procedure)를 호출하는 경우
Function
- 자신이 호출한 곳으로 반드시 하나의 값을 리턴해 줘야하는 PLSQL Stored Program이다.
- 함수 Header에 리턴되는 데이터 타입을 기술해야 하고 Header의 끝에는 IS[AS]가 와야하고 IS[AS]와 Begin사이에 Begin~End에서 사용할 변수를 선언한다.
Function의 형식

IS[/AS] 다음 Declaration_section부분에서는 밑에 Execution_section에서 사용할 변수를 선언해준다.(Procedure와 동일)
[OR REPLACE]의 뜻은 오버라이딩한다는 뜻이다.
Function의 예시

%TYPE : 같은 타입으로 지정한다.
v_ename emp.ename%TYPE : v_ename이라는 변수를 emp.ename과 같은 type으로 설정한다.
RETURN TYPE이랑 INTO 꼭 써줘야한다.
위 함수의 실행

변수에 접근할 땐 :ename을 이용해야한다.
PLSQL에서 '=' 은 ':='로 표기한다.
Procedure
- 자신을 호출한 곳으로 리턴 해주는 값은 없고 호출되어 실행만 된다.
- 실행 환경과 Stored Program 사이에 값을 전달하기 위해 파라미터를 사용한다.
- 파라미터 종류
- IN : 호출하는 곳으로 함수 or 프로시저로 값을 전달
- OUT : 함수 or 프로시저에서 호출한 곳으로 값을 전달
- IN OUT : 호출하는 곳에서 함수 or 프로시저로 값을 전달하고 동시에 함수 or 프로시저에서 호출한 곳으로 값을 전달하는 변수
Procedure 형식

IS[/AS] 다음 Declaration_section부분에서는 밑에 Execution_section에서 사용할 변수를 선언해준다.(Function과 동일)
Procedure 예제(parameter : IN)

exec ojc3([값], [값])으로 실행 가능
Procedure 예제(parameter : OUT) → 외부에서 참조가능

Function은 값을 return해줘야하고 Procedure은 값을 return 하지 않는다
'Develop > DBMS' 카테고리의 다른 글
| PL/SQL기초3 (0) | 2022.04.15 |
|---|---|
| PL/SQL기초1 (0) | 2022.04.13 |
| Oracle 문법, 쿼리, 예제 (0) | 2022.04.01 |