logo

PL/SQL 소개

PL/SQL은 개발자가 SQL의 강력한 기능과 절차적 명령문을 결합할 수 있도록 하는 블록 구조 언어입니다. 블록의 모든 명령문은 한 번에 Oracle 엔진에 전달되어 처리 속도를 높이고 트래픽을 줄입니다.

PL/SQL의 기초

  • •PL/SQL은 SQL(구조적 쿼리 언어)에 대한 절차적 언어 확장을 나타냅니다.
  • PL/SQL은 SQL과 프로그래밍 언어의 절차적 기능이 결합된 것입니다.
  • Oracle은 PL/SQL 엔진을 사용하여 PL/SQL 문을 처리합니다.
  • PL/SQL에는 조건 및 루프와 같은 절차적 언어 요소가 포함되어 있습니다. 상수 및 변수, 프로시저 및 함수, 해당 유형 및 트리거의 유형 및 변수를 선언할 수 있습니다.

SQL의 단점:



  • SQL은 프로그래머에게 조건 확인, 루프 및 분기 기술을 제공하지 않습니다.
  • SQL 문은 한 번에 하나씩 Oracle 엔진에 전달되어 트래픽이 증가하고 속도가 감소합니다.
  • SQL에는 데이터 조작 중 오류 검사 기능이 없습니다.

PL/SQL의 기능:

  1. PL/SQL은 기본적으로 의사 결정, 반복 기능 및 절차적 프로그래밍 언어의 더 많은 기능을 제공하는 절차적 언어입니다.
  2. PL/SQL은 단일 명령을 사용하여 한 블록에서 여러 쿼리를 실행할 수 있습니다.
  3. 애플리케이션에서 재사용할 수 있도록 데이터베이스에 저장되는 프로시저, 함수, 패키지, 트리거 및 유형과 같은 PL/SQL 단위를 생성할 수 있습니다.
  4. PL/SQL은 예외 처리 블록이라는 PL/SQL 블록에서 발생하는 예외를 처리하는 기능을 제공합니다.
  5. PL/SQL로 작성된 애플리케이션은 Oracle이 운영되는 컴퓨터 하드웨어나 운영 체제로 이식 가능합니다.
  6. PL/SQL은 광범위한 오류 검사를 제공합니다.

SQL과 PL/SQL의 차이점:

SQL PL/SQL
SQL은 DML 및 DDL 작업을 수행하는 데 사용되는 단일 쿼리입니다. PL/SQL은 전체 프로그램 블록/프로시저/함수 등을 작성하는 데 사용되는 코드 블록입니다.
이는 일을 어떻게 수행해야 하는지가 아니라 무엇을 수행해야 하는지 정의하는 선언적입니다. PL/SQL은 작업 수행 방법을 정의하는 절차적입니다.
단일 문으로 실행합니다. 전체 블록으로 실행합니다.
주로 데이터를 조작하는 데 사용됩니다. 주로 애플리케이션을 만드는 데 사용됩니다.
PL/SQL 코드를 포함할 수 없습니다. 이는 SQL의 확장이므로 내부에 SQL을 포함할 수 있습니다.

PL/SQL 블록의 구조:



ddl 대 dml

PL/SQL은 절차적 언어에 있는 구문을 추가하여 SQL을 확장하여 SQL보다 더 강력한 구조적 언어를 만듭니다. PL/SQL의 기본 단위는 블록입니다. 모든 PL/SQL 프로그램은 서로 중첩될 수 있는 블록으로 구성됩니다.

일반적으로 각 블록은 프로그램에서 논리적 작업을 수행합니다. 블록은 다음과 같은 구조를 가지고 있습니다:

 DECLARE declaration statements; BEGIN executable statements EXCEPTIONS exception handling statements END;>
  • 섹션이 다음으로 시작한다고 선언 선언하다 변수, 상수, 레코드를 커서로 선언하여 데이터를 임시로 저장하는 키워드입니다. 기본적으로 PL/SQL 식별자 정의로 구성됩니다. 코드의 이 부분은 선택 사항입니다.
  • 실행 섹션은 다음으로 시작됩니다. 시작하다 그리고 다음으로 끝납니다 키워드.이것은 필수 섹션이며 여기에서는 루프 및 조건문과 같은 작업을 수행하기 위해 프로그램 논리가 작성됩니다. 모두 지원합니다 DML 명령, DDL 명령과 SQL*PLUS 내장 함수도 마찬가지입니다.
  • 예외 섹션은 다음으로 시작됩니다. 예외 키워드. 이 섹션은 런타임 오류가 발생할 때 실행되는 명령문을 포함하는 선택 사항입니다. 이 섹션에서는 모든 예외를 처리할 수 있습니다.

PL/SQL 식별자

변수, 상수, 프로시저, 커서, 트리거 등과 같은 여러 PL/SQL 식별자가 있습니다.



  1. 변수 : 다른 여러 프로그래밍 언어와 마찬가지로 PL/SQL의 변수도 사용하기 전에 선언해야 합니다. 유효한 이름과 데이터 유형도 있어야 합니다. 변수 선언 구문:
variable_name datatype [NOT NULL := value ];>
  1. PL/SQL에서 변수를 선언하는 방법을 보여주는 예:




SQL>서버 출력을 ON으로 설정;> SQL>선언> >var1 INTEGER;> >var2 REAL;> >var3 varchar2(20) ;> BEGIN> >null;> END;> />

>

>

  1. 산출:
PL/SQL procedure successfully completed.>
  1. 설명:
    • 서버 출력을 켜짐으로 설정 : dbms_output에서 사용하는 버퍼를 표시하는데 사용됩니다.
    • var1 정수 : 이름이 붙은 변수의 선언입니다. var1 이는 정수 유형입니다. float, int, real, smallint, long 등과 같이 사용할 수 있는 다른 많은 데이터 유형이 있습니다. 또한 NUMBER(prec, scale), varchar, varchar2 등과 같이 SQL에서 사용되는 변수도 지원합니다.
    • PL/SQL 프로시저가 성공적으로 완료되었습니다.: 코드가 성공적으로 컴파일되고 실행되면 표시됩니다.
    • END 뒤의 슬래시(/);: 슬래시(/)는 SQL*Plus에 블록을 실행하라고 지시합니다.
    • 할당 연산자(:=) : 변수에 값을 할당하는 데 사용됩니다.
  2. 출력 표시 : 사용자가 출력, 디버깅 정보를 표시하고 PL/SQL 블록, 서브 프로그램, 패키지 및 트리거에서 메시지를 보낼 수 있도록 하는 내장 패키지인 DBMS_OUTPUT을 사용하여 출력이 표시됩니다. PL/SQL을 사용하여 메시지를 표시하는 방법을 알아보려면 예를 살펴보겠습니다.


컴퓨터 네트워크의 네트워크 계층



SQL>서버 출력을 ON으로 설정;> SQL>선언> >var varchar2(40) :=>'I love GeeksForGeeks'> ;> >BEGIN> >dbms_output.put_line(var);> >END;> >/>

>

>

  1. 산출:
I love GeeksForGeeks PL/SQL procedure successfully completed.>
  1. 설명:
    • dbms_output.put_line : 이 명령은 PL/SQL 출력을 화면으로 보내는 데 사용됩니다.
  2. 댓글 사용 : 다른 많은 프로그래밍 언어와 마찬가지로 PL/SQL에서도 코드에 영향을 주지 않는 주석을 코드 내에 넣을 수 있습니다. PL/SQL에서 주석을 생성하는 데는 두 가지 구문이 있습니다.
    • 한 줄 코멘트: 한 줄 주석을 생성하려면 기호– –사용.
    • 여러 줄 주석: 여러 줄에 걸쳐 주석을 작성하려면 기호/*그리고*/사용.
  3. 사용자로부터 입력 받기 : 다른 프로그래밍 언어와 마찬가지로 PL/SQL에서도 사용자로부터 입력을 받아 변수에 저장할 수 있습니다. PL/SQL에서 사용자로부터 입력을 받는 방법을 보여주는 예를 살펴보겠습니다.




SQL>서버 출력을 ON으로 설정;> SQL>선언> >-- taking input>for> variable a> >a number := &a;> > >-- taking input>for> variable b> >b varchar2(30) := &b;> >BEGIN> >null;> >END;> >/>

>

>

  1. 산출:
Enter value for a: 24 old 2: a number := &a; new 2: a number := 24; Enter value for b: 'GeeksForGeeks' old 3: b varchar2(30) := &b; new 3: b varchar2(30) := 'GeeksForGeeks'; PL/SQL procedure successfully completed.>
  1. (***) 하나의 코드 블록에서 위의 모든 개념을 보여주기 위해 PL/SQL에 대한 예를 살펴보겠습니다.




자바 예외 처리를 던져라
--PL/SQL code to print sum of two numbers taken from the user.> SQL>서버 출력을 ON으로 설정;> SQL>선언> > >-- taking input>for> variable a> >a integer := &a ;> > >-- taking input>for> variable b> >b integer := &b ;> >c integer ;> >BEGIN> >c := a + b ;> >dbms_output.put_line(>'Sum of '>||a||>' and '>||b||>' is = '>||c);> >END;> >/>

>

>

Enter value for a: 2 Enter value for b: 3 Sum of 2 and 3 is = 5 PL/SQL procedure successfully completed.>

PL/SQL 실행 환경:

PL/SQL 엔진은 Oracle 엔진에 상주합니다. Oracle 엔진은 단일 SQL 문뿐만 아니라 여러 문 블록도 처리할 수 있습니다. Oracle 엔진에 대한 호출은 이러한 SQL 문이 있는 경우 여러 SQL 문을 실행하기 위해 한 번만 수행되어야 합니다. PL/SQL 블록 내에 번들로 제공됩니다.