행위

PLSQL 개념

DB CAFE

Dbcafe (토론 | 기여)님의 2019년 4월 2일 (화) 13:40 판 (새 문서: PL/SQL 데이터 트랜잭션 처리 능력이나 정보 보호, 데이터에 대한 보안, 예외처리 기능, 객체지향 등 데이터베이스와 관련된 중요한 모...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
thumb_up 추천메뉴 바로가기


PL/SQL



데이터 트랜잭션 처리 능력이나 정보 보호, 데이터에 대한 보안, 예외처리 기능, 객체지향 등

데이터베이스와 관련된 중요한 모든 기능을 지원

--> 데이터베이스 업무를 처리하기에 최적화된, 오라클에서 제공하는 프로그래밍 언어

PL/SQL엔진은 메모리에서 구동됨


실행 원리


PL/SQL 블록에서의 SQL문장이 수행되어 결과가 돌아옴

그 결과를 받고 난 후 선언된 변수와 함께 나머지 PL/SQL 문장을 실행됨



기본 구조


DECLARE (선언부) - 모든 변수나 상수를 선언

EXECUTABLE (실행부) - BEGIN,제어문 반복문, 함수정의 등의 로직을 기술

EXCEPTION (예외처리부) - 실행 도중 에러 발생시 해결하는 문장 기술




유형


Anonymous PL/SQL Block - 익명블록, 일회용, 한번만 쓰고 끝

Stored PL/SQL Block - 저장된블록, 주기적으로 반복해서 사용할 경우



PL/SQL은 기본적으로 처리된 결과값을 화면에 출력하지 않기 때문에 화명 출력 기능을 활성화 시켜야 함

SCOTT>set serveroutput on ;

+




기본적인 전체문법


DECLARE

변수선언 ;

BEGIN

SQL 문장 ;

DBMS_OUTPUT.PUT_LINE(출력내용) ; --> 화면출력을 어떻게 할 것인가, END 전에 설정, 출력내용에 써주는 칼럼명은 변수이름을 써줘야한다!)

END ;

/



주의사항

들여쓰기를 권장 - 보기에도 쉬움. 습관을 들이자

그룹함수와 DECODE 함수는 SQL 문장에 포함되어야만 사용할 수 없음

문자, 날짜는 ' '로 묶어주기

PL/SQL에서는 DDL, DCL을 지원하지 않음

  • DDL - CREATE / ALTER / TRUNCATE / DROP
  • DCL - GRAN / REVOKE





=[편집]

1. SELECT 문장 사용하기


문법: (실행부에서의 문법)

BEGIN

SELECT 칼럼1,칼럼2 INTO 변수1, 변수2

FROM 테이블명

WHERE 조건 ;

END ;



2. DML 문장 사용하기 (INSERT / UPDATE / DELETE / MERGE)


1) INSERT

서버에 데이터를 입력해주는 것이니까 변수선언은 없음 즉, DECLARE (선언부)는 없음

단, 사용자로부터 입력받은 값으로 테이블에 데이터 입력하는 것은 입력받는 값에 대한 변수는 선언해줘야함


문법:

BEGIN

INSERT INTO 테이블명

VALUES (값/변수) ;

END ;


2) UPDATE

BEGIN

UPDATE 테이블명

SET 칼럼=값

WHERE 조건 ;

END ;


3) DELETE

BEGIN

DELETE FROM 테이블명

WHERE 조건;

END ;


4) MERGE

문법:

BEGIN

MERGE INTO 테이블1

USING 테이블2

ON (병합조건절)

WHEN MATCHED THEN

UPDATE SET 업데이트내용

WHEN NOT MATCHED THEN

INSERT VALUES (칼럼명) ;

END ;



  • 알아두기!

a = 20 --> 비교를 하는 비교연산자, a가 20인지 비교 해봐라

a := 20 --> 할당 연산자, 20의 값을 a에 집어 넣어라


사용자에게 값을 입력 받아서 변수에 할당 할 때는 &(앰퍼센트) 기호를 사용

그래서 사용자한테 입력을 받은 값을 a에 넣고 싶으면

a := '&abc'



중첩된 PL/SQL 블록 작성

블록안에 블록은 중첩블록 (Nested Block) 이라고 함

변수가 적용되는 범위를 잘 생각해서 써야함

외부블록에서 선언한 변수는 내부 블록에서도 사용할수 있지만

내부블록에서 선언된 변수는 외부 블록으로 나올 수 없음!


출처: https://hayleyfish.tistory.com/53?category=539089 [DB네 생선가게]