1장. PL/SQL 소개 ORACLE /PL/SQL 2014. 2. 16. 16:33

1

1. SQL 과 PL/SQL 의 차이


SQL      : 조건 분기 불가능, 루핑 불가능, 변수처리 불가능, 단문 형(화면에 가져와야 그 다음명령실행)

PL/SQL : ORACLE DBMS에서 SQL문장과 제어문을 함게 사용할 수 있다. 코드 실행단위에 블록 구조를 제공한다

              변수, 상수, 데이터타입, 조건문,루프,DB의 객체로 저장가능.


PL/SQL Fundamentals  p1-6그림 중요

 

2. PL/SQL 블럭


SQL> SET SERVEROUTPUT ON            --DBMS_OUT_PUT을 통해 보여주기위함.

DECLARE                                              --선언부( 데이터 이름과 타입 정의)

 emp_rec emp%ROWTYPE ;                   --테이블 구조를 통채로 참조.

 sum_rec emp_sum%ROWTYPE ;

BEGIN

 SELECT * INTO emp_rec                      -- 검색결과를 emp_rec에 저장.

 FROM emp

 WHERE empno = 7788 ;


 DELETE emp

 WHERE empno = 7788 ;

 

 UPDATE emp_sum

 SET sum_sal = sum_sal - emp_rec.sal

 WHERE deptno = emp_rec.deptno ;


 SELECT * INTO sum_rec

 FROM emp_sum

 WHERE deptno = emp_rec.deptno ;


  DBMS_OUTPUT.PUT_LINE ( 'SUM Salary : ' || sum_rec.sum_sal ) ;

END ;

/

SUM Salary : 7875

PL/SQL procedure successfully completed.


SQL         

--PL/SQL에서 수행된 SQL결과는  PL/SQL 블럭으로 리턴된다(보통은 SQL명령을쓴 호출환경에 출력됨.)

 사용자에게 보여주는것은 전체 PL/SQL의 최종결과 즉, 수행 되었는지 안되었는지만 보여준다.

 

이와같은 행동을 반복할 때 귀찮으므로 PROCEDURE 라는 것이 있다.

 

3. Procedure 생성   마치 뷰,테이블 등을 만드는 것 처럼 DB의 객체를 생성하는것이다.

 

CREATE OR REPLACE PROCEDURE delete_emp

 ( p_empno NUMBER) AS

 emp_rec emp%ROWTYPE ;

 sum_rec emp_sum%ROWTYPE ;

BEGIN

 SELECT * INTO emp_rec

 FROM emp

 WHERE empno = p_empno ;


 DELETE emp

 WHERE empno = p_empno ;


 UPDATE emp_sum

 SET sum_sal = sum_sal - emp_rec.sal

 WHERE deptno = emp_rec.deptno ;


 SELECT * INTO sum_rec

 FROM emp_sum

 WHERE deptno = emp_rec.deptno ;


 DBMS_OUTPUT.PUT_LINE ( 'SUM Salary : ' || sum_rec.sum_sal ) ;

END ;

/

Procedure created.

 

SQL> SET SERVEROUTPUT ON   -- DBMS.OUTPUT은 기본값이 OFF이므로 켜야한다.

SQL> EXECUTE delete_emp (7788)

 SUM Salary : 7875

PL/SQL procedure successfully completed.

 

SQL> ROLLBACK ;

 

'ORACLE > PL/SQL' 카테고리의 다른 글

6장 . 조합데이터 유형  (0) 2014.02.16
5장. 제어 구조 작성  (0) 2014.02.16
4장 PL/SQL 프로그램에서 SQL 문과 상호 작용  (0) 2014.02.16
3장 실행문 작성  (0) 2014.02.16
2장 PL/SQL 변수 선언  (0) 2014.02.16