[DB] 13.PL/SQL
# PL/SQL
상용 관계형 데이터베이스 시스템인 오라클 DBMS에서 SQL언어를 확장하기 위해 사용되는 프로그래밍입니다.
Oracle Live SQL
livesql.oracle.com
● 변수 선언
변수명 데이터타입 := 값;
num1 number := 10;
● 상수 선언
상수명 constant 데이터타입 := 값;
num2 constant number :=20;
declare -- 변수 선언
num1 number := 10;
num2 constant number :=20;
begin
-- 쿼리문
dbms_output.put_line(num1);
dbms_output.put_line(num2);
end;

● 조건문 if문
if 조건식1 then
쿼리문
elsif 조건식2 then
쿼리문
elsif 조건식3 then
쿼리문
.....
else
쿼리문
end if

● 조건문 case 문
case
when 조건식 then
쿼리문;
when 조건식 then
쿼리문;
...

● 반복문 loop 문
loop
쿼리문;
exit when 조건식;
end loop


while 문
while 조건
loop
쿼리문;
end loop


● for 문
for 변수 in 초기값.. 최종값
loop
쿼리문;
end loop;


# 저장 프로시저(Stored Procedure)
자주 사용하는 SQL 을 프로시저로 만든 뒤 필요할 때마다 호출, 사용하여 작업 효율을 늘릴 수 있습니다. 함수는 특정 연산을 수행한 뒤 결과 값을 반환하지만, 프로시저는 특정한 로직을 처리하기만 하고 결가 값은 항상 리턴되는 것은 아닙니다. 만약 반환한다면 불러준 객체쪽으로 output 객체를 리턴합니다.
# 문장의 집합
- 성능향상(첫 실행시 컴파일, 재컴파일 하지 않음)
- 보안강화(저장 프로시저 마다 권한 할당)
- 네트워크 전송량 감소(긴 쿼리가 이동할 필요가 없음)
1. 매개변수가 없는 경우
create procedure 프로시저이름
is
변수 선언
..
begin
쿼리문;
end;
exec 프로시저이름;
2. 매개변수가 있는 경우
3. 리턴값이 있는 경우