PL/SQL
Prodedural Language Extensin To SQL : SQL에 대한 절차적 언어 확장
오라클 자체에 내장되어 있는 절차적 언어
SQL 문장 내에서 변수의 정의, 조건 처리(if), 반복 처리(loop, for, while) 등을 지원하여 SQL의 단점을 보완
* PL/SQL 구조
- 선언부 (DECLARE SECTION) : DECLARE로 시작, 변수나 상수를 선언하는 부분
- 실행부 (EXECUTABLE SECTION) : BEGIN으로 시작, 제어문, 반복문, 함수 등의 로직을 기술
- 예외처리부 (EXCEPTION SECTION) : EXCEPTION으로 시작, 예외 상황 발생 시 해결하기 위한 문장
Hello world 출력
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO WORLD');
END;
출력하게되면 HELLO WORLD가 출력이안되고
아래와 같이만 출력이된다..
이유는 프로시저 사용 시 출력하는 내용을 화면에 보여주도록 설정하는 환경변수를 ON시켜줘야한다
-- HELLO WORLD 출력 되지 않는 이유
-- 프로시저 사용 시 출력하는 내용을 화면에 보여주도록 설정하는 환경변수를 ON 시켜주어야 함
-- (기본값 OFF)
SET SERVEROUTPUT OFF;
DECLARE
타입 변수 선언
변수의 선언 및 초기화, 변수 값 출력
[표현식] 변수명 자료형([크기]);
DECLARE --> 선언부 시작을 알리는 구문
EMP_ID NUMBER; --> NUMBER 타입의 변수 EMP_ID 선언
EMP_NAME VARCHAR2(30); --> VARCHAR2 타입의 변수 EMP_NAME 선언
PI CONSTANT NUMBER := 3.14; --> NUMBER 타입의 상수 PI 선언 및 초기화
BEGIN --> 실행부 시작을 알리는 구문
EMP_ID := 888; --> EMP_ID 변수에 값을 888로 초기화
EMP_NAME := '배장남'; --> EMP_NAME 변수에 값을 '배장남'으로 초기화
-- PI := 3.15; --> 상수 값은 초기화 된 뒤 다시 값 대입 불가
-- 변수출력 (문자열 연결 연산자 ||)
DBMS_OUTPUT.PUT_LINE('EMP_ID : ' || EMP_ID);
DBMS_OUTPUT.PUT_LINE('EMP_NAME : ' || EMP_NAME);
DBMS_OUTPUT.PUT_LINE('PI : ' || PI);
END;
/
레퍼런스 변수의 선언과 초기화, 변수값 출력
-- [표현식] 변수명 테이블명.컬럼명%TYPE
DECLARE
EMP_ID EMPLOYEE.EMP_ID%TYPE;
--> 변수 EMP_ID의 타입을 EMPLOYEE 테이블의 EMP_ID 컬럼이 가진 타입으로 지정
EMP_NAME EMPLOYEE.EMP_NAME%TYPE;
--> 변수 EMP_NAME의 타입을 EMPLOYEE 테이블의 EMP_NAME 컬럼이 가진 타입으로 지정
BEGIN
SELECT EMP_ID, EMP_NAME --> 테이블에서 SELECT 된 값
INTO EMP_ID, EMP_NAME --> DECLARE에서 선언한 변수에 넣는다.
FROM EMPLOYEE
WHERE EMP_ID = '&ID';
-- '&' 기호가 있는 문자열은 대체변수를 입력(갑을이력)하라는 의미
DBMS_OUTPUT.PUT_LINE('EMP_ID : ' || EMP_ID);
DBMS_OUTPUT.PUT_LINE('EMP_NAME : ' || EMP_NAME);
END;
/
계속 작성예정
'프로그래밍 > Database(Oracle)' 카테고리의 다른 글
Oracle - SYNONYM(동의어) (0) | 2021.07.07 |
---|---|
Oracle - INDEX (0) | 2021.07.07 |
Oracle - DCL(GRANT, REVOKE) (0) | 2021.07.06 |
Oracle - 시퀀스(sequence) (0) | 2021.07.06 |
Oracle - view (0) | 2021.07.06 |