PL/SQL

2014. 3. 6. 14:57 from DB

비교문과 반복문을 사용할 수 없는 SQL언어의 단점을 사용가능하게 만든것이 PL/SQL (Procedural Language-SQL) 언어

 

SQL의 단점

1. 반복처리를 할 수 없다. (loop)

2. 비교처리를 할 수 없다. (if)

3. Error처리를 할 수 없다. (exception처리)

4. SQL문을 캡슐화 할 수 없다.

5. 변수선언을 할 수 없다.

6. 실행할 때마다 분석작업 후 실행

7. Network Traffic을 유발한다.  

 

일반적으로 3GL 언어를 컴파일 언어라고 한다. 즉 미리 실행될 로직(logic)을 작성하여 문법과 테이블의 존재 여부를 컴파일러에 의해 분석하고 그 결과를 바이너리 실행파일로 생성한 후 필요할 때마다 호출하여 실행하는 방법이다.

 

 

 

생성과 실행
 

SQL> Create Procedure SALARY_CAL

         Begin

             Select * INTO :a,m :b

             From emp

             where id = 10;

             If SQL%NotFound then

                ....

             ENDIF

         END;

SQL> Excute SALARY_CAL
 

 

 

 

PL/SQL 언어 유형

PL/SQL은 기본적으로 DECLARE ~ BEGIN ~ EXCEPTION ~ END; 의 기본 문법을 가지고 있다.

3GL 언어(C,C++,JAVA 등)들을 보면 프로그래밍을 하기 위해 main()함수절을 가지고 있는 것과 동일 한 의미이다.

이러한 기본문법으로 생성할 수 있는 PL/SQL의 종류는 다음과 같이 6가지 종류가 있다.

 

1. Anonymous Procedure

  Anonymous(무명의) PL/SQL 블록은 생성할 때 DECLARE~ 문법으로 시작된다.

  사용자가 반복적으로 실행하려는 SQL문을 필요할 때마다 작성하여 실행하는 방법이다.

  그래서, 일반적으로 다른 PL/SQL의 종류와는 달리 데이터베이스 내에 그정보가 저장되어 있지 않기 때문에

  무명인 Anonymous PL/SQL이라고 한다.

 

2. Stored Procedure

  CREATE PROCEDURE name ~ 문법에 의해 생성되면 생성 후 데이터베이스 내에 그 정보가 저장된다.

  이러한 PL/SQL을 NAMED PL/SQL 이라고 한다.

  그중에서도 STORED PROCEDURE는 개발자가 실행하려는 logic을 처리만 하고 PL/SQL 블록이 끝나는 처리흐름을 가졌다.

 

3. Stored Function

  Stored Function은 2번에서 소개한 Stored Procedure와 동일한 개념, 동일한 기능을 가지고 있다.

  한가지 차이점은 Stored Procedure는 로직을 처리만 하고 끝내지만, Stored Function은 그 처리 결과를 사용자에게 돌려준다.

 

4. Package

  PL/SQL 언어를 통해 시스템을 개발하다 보면 수 많은 Stored Procedure, Stored Function들을 생성하게 된다.

  하지만 그수가 너무 많아지면 개발자가 관리하기가 불편하고 어떤 Procedure, Function이 존재하는지 기억하기도 어려워진다.

  이러한 개발환경에서 보다 효과적으로 PL/SQL 블록들을 관리하기 위해 사용되는 것이 패키지다.

  보통 업무단위별로 패키지를 만들어 관리한다. 관리하기 용이하게 하기 위해 사용되어진다.

 

5. Trigger

  트리거는 PL/SQL종류 중 가장 다양한 기능을 가지고 있다. 트리거 생성시 설정한 테이블에 대해 누군가가

  UPDATE, INSERT, DELETE문을 실행하면 그작업을 실행시킨후 또는 실행시키기 전에 TRIGGER에 정의한 로직을 실행시키는

  PL/SQL 블럭이다.  데이터베이스의 감시, 보안, 연속적인 오퍼레이션의 자동처리, HISTORY등등 응용할 데가 많다.

 

6. Object-Type

  오라클 데이터베이스는 버젼 8부터 객체(Object)  옵션을 제공하고 있다.

  또한 객체옵션이 제공되는 데이터베이스를 객체관계형 데이터베이스라고 한다. 이러한 객체에 대해 데이터를 입력, 수정, 삭제

  조회하기 위해서는 반드시 PL/SQL 언어를 사용해야 한다.

 

'DB' 카테고리의 다른 글

[oracle] sys_connect_by_path()  (0) 2014.04.08
테이블 insert 권한 줄때 잊지말고 시퀀스도 select 권한도 함께!  (0) 2014.04.03
SQL 언어의 종류  (0) 2014.03.06
데이터베이스 설계단계  (0) 2014.03.06
SQL 표준 개정이력  (0) 2014.03.06
Posted by 에시드 :