[Oracle] 오라클 - PL/SQL 기본 문법 (SELECT)
by mini_min[Oracle]
오라클 - PL/SQL(절차적) 기본 문법
✔️ PL/SQL 이란?
: 프로그래밍언어의 특성을 가지는 SQL의 확장
: 데이터 조작과 질의 문장은 PL/SQL의 절차적 코드 안에 포함된다.
: 주로 자료 내부에서 sql 명령문 만으로 처리하기에 복잡한 자료의 저장이나 프로시저와 트리거를 작성하는데 사용한다.
- PL/SQL 프로그래밍 단위
ㆍPL/SQL 익명 블록 (블록화시켜서 프로그램화 시키는 것)
ㆍ함수 (function)
ㆍ프로시저 ⭐⭐⭐ 명령을 저장하고 필요할 때 사용하는 것
ㆍ패키지 : 패키지 명세, 패키지 바디
ㆍ트리거
- DBMS_OUTPUT 패키지
: 디버깅 또는 출력 메시지 그리고 REPORTS 를 출력하기 위한 패키지다.
: PUT_LINE 해서 결과 . 먼저 출력 하기 전 설정이 필요하다.
= SQL>SET SERVEROUTPUT ON
⚡ 자료형이 조금 다르다.
= VARCHAR2(n) : 4000바이트보다 많이 , 3만 바이트 이상 저장 가능
⚡ 변수 이름을 먼저 주고, 타입은 나중에 줘야한다. (자바랑 다름)
⚡ 대입 연산자는 " := " 이다.
✔️ PL/SQL 변수
: 변수와 상수는 반드시 DECLARE 부에서 선언되어야한다.
: 단, FOR 문에서 사용되는 반복용 변수는 예외다.
✔️ PL/SQL 기본 문법
DECLARE : 선언부
BEGIN : 실행부
END : 끝맺음
-- 예시 (1)
DECLARE vname VARCHAR2(50); vpay NUMBER; BEGIN SELECT name, sal + bonus INTO vname, vpay FROM emp WHERE empNo = '1001'; DBMS_OUTPUT.PUT_LINE('이름: ' || vname || ', 급여 : ' || vpay); END; /
💡 PL/SQL 에서의 SELECT 문 형식
SELECT 컬럼, 컬럼 INTO 변수, 변수 FROM 테이블 [WHERE 조건]
❌ 데이터가 많으면 안된다.
WHERE 절이 없기 때문에 데이터 60개가 나올 수 있다!!
= 값이 반드시 존재해야하고, 데이터가 하나여야한다.
💡 emp.name%TYPE;
%TYPE : 테이블의 컬럼을 참조하는 변수 선언까지 함
-- 예시 (2)
DECLARE vrec emp%ROWTYPE; BEGIN SELECT * INTO vrec FROM emp WHERE empNo = '1001'; DBMS_OUTPUT.PUT_LINE('이름: ' || vrec.name || ', 급여 : ' || vrec.sal); END; /
💡 %ROWTYPE : 테이블 또는 뷰의 행을 참조하는 레코드 선언
EMP 테이블의 컬럼 이름만 알면 쉽게 참조할 수 있다.
empNo 가 1001 인 레코드의 ROWTYPE 을 반환함.
-- 예시 (3)
-- 레코드 유형 선언 : 사용자 정의 구조체 변수
: 다양한 유형의 데이터 값을 저장할 수 있는 복합 변수이다. 테이블의 행 데이터 또는 행의 특정 컬럼을 저장하는데 유용!
: 레코드 유형을 정의해도 되고, %ROWTYPE 선언해도 똑같다~
DECLARE 선언부 (레코드 유형 선언) TYPE mytype IS RECORD ( name emp.name%TYPE, pay NUMBER ); -- 레코드 변수 선언 vrec MYTYPE; BEGIN SELECT name, sal INTO vrec FROM emp WHERE empNo = '1001'; DBMS_OUTPUT.PUT_LINE('이름: ' || vrec.name || ', 급여 : ' || vrec.pay); END; /
⭐ mytype 이란 TYPE 을 만들었다.
⭐ vrec 은 MYTYPE 이란 레코드 변수 선언! (안에 들어있는 컬럼을 접근할 때 쩜을 찍어서 접근한다.)
블로그의 정보
개발자 미니민의 개발로그
mini_min