SMALL
안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
PL/SQL (Procedural Language Extension to SQL)
- SQL 절차적 언어 확장
- PL/SQL 안에서는 기본 SQL 외에 변수, 조건처리, 반복처리 가능
PL/SQL 유형
① 익명 블럭
② PL/SQL 객체
- Procedure
- Function
- Trigger
- Job
- Scheduler
익명블럭
익명블럭 구조
declare
- (선택) 변수선언부
begin
- (필수) 실행부
excetption
- (선택) 예외처리부
end;
/
콘솔 출력 세팅(세션단위)
- SQL 혹은 컴퓨터를 껐다 킬 때마다 세팅 해줘야 함
set serveroutput on;
콘솔 출력 코드
begin
-- 콘솔출력
dbms_output.put_line('안녕');
end;
/
dbms_output.put_line()과 익명 블럭을 이용하여 '안녕'을 출력하였습니다.
기본 구문 활용하여 출력하기
declare
-- 변수선언
vid varchar2(10);
begin
select
emp_id
into
vid -- 조회된 emp_id를 vid변수에 담음
from
employee
where
emp_name = '선동일';
dbms_output.put_line('사번 : ' || vid);
--exception
end;
/
into절을 이용하여 조회된 값을 변수에 담을 수 있습니다.
exception절 활용하기
declare
-- 변수선언
vid varchar2(10);
begin
select
emp_id
into
vid -- 조회된 emp_id를 vid변수에 담음
from
employee
where
-- emp_name = '선동일';
emp_name = '선동이'; -- ORA-01403: no data found 발생
dbms_output.put_line('사번 : ' || vid);
--exception
end;
/
데이터가 없는 값을 찾으면 0행이 리턴되기 때문에 해당 값을 변수에 담을 수 없으므로,
"ORA-01403: no data found" 이 발생하게 되며 해당 예외를 exception절에서 잡을 수 있습니다.
declare
-- 변수선언
vid varchar2(10);
begin
select
emp_id
into
vid -- 조회된 emp_id를 vid변수에 담음
from
employee
where
-- emp_name = '선동일';
emp_name = '선동이';
dbms_output.put_line('사번 : ' || vid);
exception
when no_data_found then dbms_output.put_line('찾으시는 사원이 존재하지 않습니다.');
end;
/
데이터를 입력 받아 익명 블럭 활용하기
declare
-- 변수선언
vid varchar2(10);
begin
select
emp_id
into
vid -- 조회된 emp_id를 vid변수에 담음
from
employee
where
-- emp_name = '선동일';
-- emp_name = '선동이';
emp_name = '&사원명';
dbms_output.put_line('사번 : ' || vid);
exception
when no_data_found then dbms_output.put_line('찾으시는 사원이 존재하지 않습니다.');
end;
/
&를 이용하여 데이터를 직접 입력할 수 있습니다.
※ 스크립트 출력 창에는 유효성 검사 구문도 같이 출력 되므로, 결과만 보고 싶다면 보기 → DBMS 출력 창을 이용할 수 있습니다.
(접속 계정 설정 필요!)
LIST
'DataBase > Oracle' 카테고리의 다른 글
PL/SQL) DQL과 DML 처리 (0) | 2022.05.02 |
---|---|
PL/SQL) 자료형 종류 및 변수 종류 (스칼라 변수, 참조 변수 - %type, %rowtype, record) (0) | 2022.05.02 |
DB객체) INDEX 객체(장단점, 실행계획, 사용 시 주의점) (0) | 2022.04.29 |
DB객체) SEQUENCE 객체 (nextval, currval) (0) | 2022.04.29 |
DB객체) STORED VIEW 객체 (0) | 2022.04.28 |