🌏 DataBase/MySQL

[DB] 13.PL/SQL

ryang x2 2020. 11. 6. 16:58
728x90
반응형

# PL/SQL 

상용 관계형 데이터베이스 시스템인 오라클 DBMS에서 SQL언어를 확장하기 위해 사용되는 프로그래밍입니다.

 

https://livesql.oracle.com/ 

 

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. 리턴값이 있는 경우

 

 

 

728x90
반응형