- 단일 if : 조건에 맞을 경우에만 코드를 실행해야 할 때
문법)
if 조건식 then
조건에 맞는 문장들;
end if;
- if~else : 둘 중 하나의 코드를 실행해야 할 때
문법)
if 조건식 then
조건에 맞을 때 수행 문장들 ;
else
조건에 맞지 않을 때 수행할 문장 들;
end if
다중 if (else~ if)
- 연관된 여러 조건을 비교해야할 때
문법)
if 조건식 then
조건에 맞을 때 수행할 문장들…;
elsif 조건식 then
조건에 맞을 때 수행할 문장들…;
else
모든 조건에 맞지 않을 때 수행할 문장들;
end if;
반복문
- 특정 코드를 반복하여 실행해야 될 때
- 무한 loop에 들어가지 않도록 주의하여 사용
- 무한 loop에 들어가면 출력되지 않는다
for문
- 시작과 끝을 알때 사용하는 반복문
문법)↙선언하지않는 변수 : 시작 값에서부터 끝 값까지 1씩 증가하는 값을 저장할 목적변수. for 안에서만 사용된다
for 변수명 in 시작값 .. 끝값 loop
반복수행문장들;
end loop;
반복문
while
- 시작과 끝을 모를 때 사용하는 반복문
문법)
초기값;
while 조건식 loop
반복수행문장들…;
증감식;
end loop;
loop
- do ~while 의 반복효과를 얻을때 사용(최소 1번수행 최대 조건까지 수행)
문법)
loop
반복수행문장; <- 요 사이에 필요에 따라 exit을 사용한다
end loop;
record
- 여러 개의 값을 하나로 묶어 저장하고, 사용하기 위해
- %rowtype으로 하나의 변수에 테이블의 모든 컬럼을 묶어서 사용할 수 있지만, 이 경우에는 모든 컬럼을 그대로 가지고 사용해야한다. => 개선한 것이 record
사용법)
- record 선언 ( record로 변수를 선언했을때 record에 포함될 변수를 설정)
: declare~begin 사이에서 선언
- 사용자 정의 자료형을 만드는 것
type 레코드명 is record(변수명 데이터형(크기)….);
2. 선언된 record를 사용하여 record변수를 선언
변수명 레코드명;
3. 2번에서 선언된 record 변수를 사용
begin ~ end 사이에서 recrd 변수를 사용
레코드변수명.변수명 := 값;
사용 예)
declare
— 1. record 선언 : (데이터 형의 선언)
type person_rec is record ( name varchar2(30), age number(3), addr varchar2(300));
— 2. 선언된 record로 변수선언
fmfm person_rec;
begin
— 3. 선언된 record 변수를 사용
fmfm.name := ‘김르르’;
fmfm.age := 26;
fmfm.addr := ‘강남구 역삼동’;
PL/SQL 쿼리문 작성
- SQL문의 쿼리형식을 그대로 사용한다
insert 사용 (컬럼명과 변수명이 같아도 상관없다)
insert into 테이블명 (컬럼명…) values (변수명….);
update 사용 (컬럼명과 변수명이 달라야 한다)
update 테이블명
set 컬럼명 = 변수명
where 컬럼명=변수명;
delete 사용 (컬럼명과 변수명이 달라야한다 )
delete from 테이블명 where 컬럼명 = 변수명;
select 사용 ( 조회된 결과가 저장될 into절 추가, 반드시 한 행이 조회되어야 한다)
select 컬럼명…
into 변수명…. ->조회된 컬럼의 값을 저장하기 위해 존재.컬럼과 변수는 1:1로 대응되어야한다
from 테이블명
where 컬럼명= 변수명;
end;
/
- 쿼리문이 실행되면 쿼리문이 수행된 행의 수를 sql%rowcount를 사용하여얻을 sql을 암시적커서라하고, %rowcount를 속성이라고 한다