if

김르르
4 min readMar 31, 2021

--

  • 단일 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

사용법)

  1. 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를 속성이라고 한다

--

--

김르르
김르르

Written by 김르르

0 Followers

르르입니다

No responses yet