* PL/SQL ?
-> 오라클 자체에 내장되어 있는 절차적 언어 (PROCEDUAL LANGUAGE)
-> SQL 문장 내에서 변수 정의, IF LOOP FOR WHILE 등을 지원하며 SQL의 단점 보완
*PL/SQL 구조
1) 선언부 : DECLARE ~ 변수나 상수 선언
2) 실행부 : BEGIN ~ 제어문, 반복문, 함수 정의 등 로직
3) 예외처리부 : EXCEPTION~ 예외 발생 시 해결하기 위한 문장
* PL/SQL의 장점
1. BLOCK 구조로 다수의 SQL문을 한번에 ORACLE DB로 보내 처리하므로 수행 속도 향상
2. 모든 요소는 하나 또는 두 개 이상의 블록으로 구성하여 모듈화 가능
3. 동적으로 변수 선언 가능
4. EXCEPTION 을 통해여 ORACLE SERVER ERROR 처리가능 (사용자 정의 에러 정의 및 처리도 가능)
※프로시저 사용 시 출력하는 내용을 화면에 보이도록 하는 명령어
SET SERVEROUTPUT ON;
<HELLO WORLD 출력>
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO WORLD');
END;
/
(/ : PL/SQL 블록 종료 의미)
<변수 선언, 초기화>
DECLARE
C1 NUMBER;
C2 VARCHAR2(30);
C3 VARCHAR(30):= 'MY' ;
C4 CONSTANT NUMBER := 3.141592;
BEGIN
C1 := 999;
C2 := 'NAME'
END;
/
오라클의 대입연산자 -> :=
<레퍼런스 변수> -> 변수의 데이터 타입을 테이블 또는 뷰의 컬럼을 참조하여 지정하는 변수
-> 종류 : %TYPE, %ROWTYPE
-> %TYPE : 해당 컬럼의 데이터 타입을 얻음
-> %ROWTYPE : 해당 테이블 행 전체의 타입을 얻음
DECLARE
ID TABLE_A.A_ID%TYPE; --변수 선언
NAME TABLE_A.A_NAME%TYPE; --자료형은 해당 테이블컬럼을 참조
BEGIN
SELECT A_ID, A_NAME --변수에 SELECT 값 각각 대입
INTO ID, NAME
FROM TABLE_A
WHERE A_ID = '&ID';
DBMS_OUTPUT.PUT_LINE(ID); --저장된 변수 출력
DBMS_OUTPUT.PUT_LINE(NAME);
END;
/
오라클 값 입력창 : '&이름'
<%ROWTYPE 활용>
DECLARE
ROW_V TABLE_A%ROWTYPE;
BEGIN
SELECT *
INTO ROW_V
FROM TABLE_A
WHERE A_ID = '&ID';
DBMS_OUTPUT.PUT_LINE('A_ID: ' || TABLE_A.A_ID);
DBMS_OUTPUT.PUT_LINE('A-NAME: ' || TABLE_A.A_NAME);
DBMS_OUTPUT.PUT_LINE('A_PHONE: ' || TABLE_A.A_PHONE); --원하는 변수 출력
END;
/
'개발자로 업그레이드 되자 > 오라클,SQL' 카테고리의 다른 글
오라클 DBMS 정리 13(PROCEDURE/ FUNCTION/CURSOR) (0) | 2021.09.30 |
---|---|
오라클 DBMS 정리 12(PL/SQL- IF ~ ELSE, LOOP) (0) | 2021.09.29 |
오라클 DBMS 정리 10(OBJECT) (0) | 2021.09.29 |
오라클 DBMS 정리 9(DCL) (0) | 2021.09.29 |
오라클 DBMS 정리 8(TCL) (0) | 2021.09.29 |