plsqlplsql 시작하기


비고

이 절에서는 plsql이 무엇인지, 그리고 개발자가 왜 그것을 사용하고 싶어하는지에 대한 개요를 제공합니다.

또한 plsql 내의 큰 주제를 언급하고 관련 주제에 링크해야합니다. plsql에 대한 문서는 새로운 것이므로 관련 주제의 초기 버전을 만들어야 할 수도 있습니다.

PLSQL 정보

PL / SQL은 SQL에 대한 프로 시저 언어 확장을 나타냅니다. PL / SQL은 다른 소프트웨어 제품에서 "가능한 기술"로만 사용할 수 있습니다. 독립 실행 형 언어로 존재하지 않습니다. PL / SQL은 Oracle 관계형 데이터베이스, Oracle Server 및 Oracle Forms와 같은 클라이언트 측 애플리케이션 개발 도구에서 사용할 수 있습니다. 다음은 PL / SQL을 사용할 수있는 몇 가지 방법입니다.

  1. 저장 프로 시저를 작성합니다. .
  2. 데이터베이스 트리거를 작성하려면 다음을 수행하십시오.
  3. Oracle Forms 애플리케이션에 클라이언트 측 로직을 구현합니다.
  4. World Wide Web 홈 페이지를 Oracle 데이터베이스에 링크하려면 다음을 수행하십시오.

표 만들기

아래에서는 3 개의 열이있는 테이블을 만듭니다.
Id 는 반드시 채워야하기 때문에 NOT NULL 정의합니다.
Contract 열에는 수표가 추가되어 허용되는 유일한 값은 'Y'또는 'N'입니다. 삽입이 완료되고이 열이 삽입 중에 지정되지 않으면 기본값 인 'N'이 삽입됩니다.

CREATE TABLE Employee (
        Id            NUMBER NOT NULL,
        Name          VARCHAR2(60),
        Contract      CHAR DEFAULT 'N' NOT NULL,
        ---
        CONSTRAINT p_Id PRIMARY KEY(Id),
        CONSTRAINT c_Contract CHECK (Contract IN('Y','N'))
);
 

보기 만들기 또는 바꾸기

이 예제에서는 뷰를 생성합니다.
뷰는 주로 여러 테이블에서 데이터를 가져 오는 간단한 방법으로 사용됩니다.

예제 1 :
하나의 테이블에서 select로보기.

CREATE OR REPLACE VIEW LessonView AS
       SELECT     L.*
       FROM       Lesson L;
 

예 2 :
여러 테이블에서 select로보기.

CREATE OR REPLACE VIEW ClassRoomLessonView AS
       SELECT     C.Id, 
                  C.Name, 
                  L.Subject, 
                  L.Teacher 
       FROM       ClassRoom C, 
                  Lesson L 
       WHERE      C.Id = L.ClassRoomId;
 

쿼리에서이 뷰를 호출하려면 select 문을 사용할 수 있습니다.

SELECT * FROM LessonView;
SELECT * FROM ClassRoomLessonView;
 

PLSQL의 정의

PL / SQL (Procedural Language / Structured Query Language)은 SQL 및 Oracle 관계형 데이터베이스에 대한 Oracle Corporation의 절차 적 확장입니다. PL / SQL은 Oracle Database (버전 7부터), TimesTen 메모리 내장 데이터베이스 (버전 11.2.1부터) 및 IBM DB2 (버전 9.7부터)에서 사용할 수 있습니다.

PL / SQL의 기본 단위는 블록이라고하며, 선언 부분, 실행 부분 및 예외 작성 부분의 세 부분으로 구성됩니다.

DECLARE
   <declarations section>
BEGIN
   <executable command(s)>
EXCEPTION
   <exception handling>
END;
 

Declarations -이 섹션은 DECLARE 키워드로 시작합니다. 선택적 섹션이며 프로그램에서 사용되는 모든 변수, 커서, 서브 프로그램 및 기타 요소를 정의합니다.

실행 가능한 명령 -이 섹션은 BEGIN 및 END 키워드로 묶여 있으며 필수 섹션입니다. 이것은 프로그램의 실행 가능한 PL / SQL 문으로 구성됩니다. 적어도 하나의 실행 가능 코드 행을 가져야하며, 아무것도 실행되지 않아야한다는 것을 나타내는 NULL 명령 일 수 있습니다.

예외 처리 -이 섹션은 EXCEPTION 키워드로 시작합니다. 이 섹션은 다시 선택 사항이며 프로그램의 오류를 처리하는 예외를 포함합니다.

모든 PL / SQL 문은 세미콜론 (;)으로 끝납니다. PL / SQL 블록은 BEGIN 및 END를 사용하여 다른 PL / SQL 블록 내에 중첩 될 수 있습니다.

익명 블록에서는 블록의 실행 부분 만 필요하며 다른 부분은 네세 스리가 아닙니다. 다음은 단순한 익명 코드의 예입니다.이 익명 코드는 오류보고없이 수행하지만 아무것도 수행하지 않습니다.

BEGIN
    NULL;
END;
/ 
 

PL / SQL이 빈 블록을 지원하지 않기 때문에 excecutable 명령이 없으면 오류가 발생합니다. 예를 들어 아래 코드를 실행하면 오류가 발생합니다.

BEGIN
END;
/ 
 

응용 프로그램에서 오류가 발생합니다.

END;
*
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
( begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge
 

키워드 "END; 아래 줄에"* "기호가 있습니다. 이 블록으로 끝나는 블록이 비어 있거나 잘못 구성된 것을 의미합니다. 모든 실행 블록은 우리 예제처럼 아무 것도하지 않더라도 수행 할 지침이 필요합니다.

% TYPE과 % ROWTYPE의 차이.

%TYPE : 지정된 테이블의 열과 동일한 유형의 필드를 선언하는 데 사용됩니다.

DECLARE
        vEmployeeName   Employee.Name%TYPE;
BEGIN
        SELECT Name 
        INTO   vEmployeeName
        FROM   Employee
        WHERE  RowNum = 1;
        
        DBMS_OUTPUT.PUT_LINE(vEmployeeName);
END;
/
 

% ROWTYPE : 지정된 테이블, 뷰 또는 커서 (= 여러 열)에있는 것과 동일한 유형의 레코드를 선언하는 데 사용됩니다.

DECLARE
        rEmployee     Employee%ROWTYPE;
BEGIN
        rEmployee.Name := 'Matt';
        rEmployee.Age := 31;
        
        DBMS_OUTPUT.PUT_LINE(rEmployee.Name);
        DBMS_OUTPUT.PUT_LINE(rEmployee.Age);
END;
/
 

안녕하세요 세계

set serveroutput on

DECLARE
   message constant varchar2(32767):= 'Hello, World!';
BEGIN
   dbms_output.put_line(message);
END;
/
 

명령 set serveroutput on 출력 가능하도록 SQL * 플러스와 SQL 개발자 클라이언트가 필요합니다 dbms_output . 명령이 없으면 아무 것도 표시되지 않습니다.

end; 라인은 익명의 PL / SQL 블록의 끝을 알립니다. SQL 명령 줄에서 코드를 실행하려면 코드의 마지막 줄 다음에있는 첫 번째 빈 줄 시작 부분에 / 를 입력해야 할 수 있습니다. 위의 코드가 SQL 프롬프트에서 실행되면 다음과 같은 결과가 생성됩니다.

Hello, World!

PL/SQL procedure successfully completed.