PL / SQL 자습서 : PL / SQL에 대해 알아야 할 모든 것



PL / SQL 튜토리얼은 다양한 예제를 통해 PL / SQL 프로그래밍을 마스터하는 데 필요한 모든 개념에 대한 자세한 설명을 다룹니다.

PL / SQL은 다음과 같은 단점을 극복하는 절차 적 언어입니다. 구조적 쿼리 언어 . 이는 SQL의 확장이며 PL / SQL 애플리케이션이나 프로그램에서 번거 로움없이 SQL 쿼리를 사용할 수도 있습니다. 이 PL / SQL 자습서에서는 PL / SQL의 기본 개념을 자세히 살펴 봅니다. 이 기사에서는 다음 주제를 다룹니다.

자바에서 mvc는 무엇입니까

PL / SQL이란 무엇입니까?

절차 적 언어 확장을 의미합니다. 구조화 된 쿼리 언어 . 오라클은 오라클에서 실행되는 미션 크리티컬 애플리케이션을 구축하기위한보다 포괄적 인 솔루션을 제공하기 위해 SQL의 일부 제한을 확장하는 PL / SQL을 생성했습니다. .





logo-pl / sql 튜토리얼-edureka

풍모

  • PL / SQL은 의사 결정, 반복 등과 같은 절차 적 언어의 기능을 제공합니다.

  • 단일 명령을 사용하여 PL / SQL은 여러 쿼리를 실행할 수 있습니다.



  • 또한 생성 후 데이터베이스에 저장된 함수, 트리거, 프로 시저 등과 같은 PL / SQL 단위를 재사용 할 수 있습니다.

  • PL / SQL에는 PL / SQL의 예외를 처리하는 예외 처리 블록도 있습니다.

  • PL / SQL을 사용하여 광범위한 오류 검사도 가능합니다.



  • PL / SQL로 작성된 애플리케이션은 Oracle이 작동해야하는 경우 다른 하드웨어 및 운영 체제로 이식 가능합니다.

PL / SQL 대 SQL

SQL PL / SQL
SQL은 DDL 및 DML 작업을 수행하는 데 사용되는 단일 쿼리입니다.PL / SQL은 전체 프로그램 또는 프로 시저 / 함수 등을 정의하는 데 사용되는 코드 블록입니다.
작업을 수행해야하는 방법을 정의하는 것이 아니라 수행해야하는 작업을 정의합니다.PL / SQL은 작업 수행 방법을 정의합니다.
단일 문을 실행합니다.한 번에 문장 블록을 실행합니다.
SQL은 주로 데이터를 조작하는 데 사용됩니다.반면에 PL / SQL은 애플리케이션을 생성하는 데 사용됩니다.
PL / SQL 코드를 포함 할 수 없습니다.SQL 확장이므로 SQL 코드를 포함 할 수 있습니다.

PL / SQL의 블록 구조

PL / SQL은 일반적으로 코드를 블록으로 구성합니다. 이름이없는 코드 블록을 익명 블록이라고합니다. Oracle 데이터베이스에 저장되지 않기 때문에 익명 블록이라고합니다. PL / SQL의 익명 블록을 살펴 보겠습니다.

[DECLARE] 선언문 [BEGIN] 실행 문 [EXCEPTION] 예외 문 END /

위에 표시된 다이어그램을 보면 블록 구조가 선언, 시작, 예외 및 종료의 네 부분으로 나뉘어져 있음을 알 수 있습니다. PL / SQL에서 블록 구조가 어떻게 작동하는지 이해해 보겠습니다. 이 모든 섹션 중에서 실행 섹션은 필수이고 나머지는 모두 선택 사항입니다.

  • 알리다 키워드는 선언 부분에 사용되며 변수, 함수 등과 같은 데이터 유형 및 구조를 선언하는 데 사용됩니다.

  • 시작 키워드는 실행 섹션에 사용됩니다. 필수이며 실행해야하는 모든 명령문을 포함합니다. 이 블록은 비즈니스 로직이 정의 된 곳이며,이 블록에서 절차 또는 SQL 문을 모두 사용할 수 있습니다.

  • 그만큼 예외 키워드는 예외 섹션에 사용됩니다. 모든 예외 문을 포함합니다.

  • 종료 키워드는 블록의 끝을 표시하고 백 슬래시 '/'는 PL / SQL 블록을 실행하기 위해 사용중인 도구 (Oracle Database Tool)를 나타냅니다.

다음은 PL / SQL 코드를 사용하는 방법을 보여주는 간단한 예입니다.

BEGIN NULL END /

이제 블록 구조가 PL / SQL에서 어떻게 작동하는지 알았으므로 변수에 값을 선언, 이름 지정 및 할당하는 것과 같은 PL / SQL의 다양한 측면을 이해하겠습니다.

PL / SQL 변수

PL / SQL의 변수는 기본적으로 특정 데이터 유형을 지원하는 변경되는 이름 또는 임시 저장 위치입니다. PL / SQL 프로그램에서 변수를 어떻게 사용할 수 있는지 살펴 보겠습니다.

변수 이름 지정 규칙

PL / SQL은 변수 이름 지정에 대해 다음 규칙을 따릅니다.

  • 변수는 31자를 초과 할 수 없습니다.

  • 변수 이름은 ASCII 문자로 시작해야합니다. PL / SQL은 대소 문자를 구분하므로 대문자와 소문자는 다른 변수가됩니다.

  • 첫 번째 문자 뒤에는 특수 문자 ($, _) 또는 임의의 숫자가 있어야합니다.

명명 규칙

변수를 사용하려면 아래에 나열된 다음 명명 규칙을 사용하십시오.

접두사 데이터 형식
V_VARCHAR2
엔_번호
티_
아르 자형_
디_데이트
비_부울

선언

PL / SQL에서 변수 선언이 수행되는 방식을 이해해 보겠습니다.

선언에는 변수 이름과 데이터 유형이 포함되며 세미콜론으로 구분됩니다. 다음은 PL / SQL에서 변수를 선언하는 방법을 보여주는 예입니다.

DECLARE v_name VARCHAR (25) n_age NUMBER (3) BEGIN NULL END

위의 예에서 수행 한 것처럼 데이터 유형의 길이를 추가 할 수도 있습니다.

앵커

앵커는 기본적으로 테이블에서 특정 열의 열 데이터 유형과 연관된 데이터 유형으로 변수를 선언하는 % TYPE 키워드의 사용을 나타냅니다.

이를 이해하려면 예제를 살펴보십시오. EMPLOYEES 테이블이 있다고 가정하면 다음과 같은 방법으로 앵커를 사용할 수 있습니다.

DECLARE v_name EMPLOYEE.NAME % TYPE n_age EMPLOYEE.AGE % TYPE BEGIN NULL END /

할당

변수 할당은 매우 쉽습니다. 할당 연산자를 사용하여 변수에 값을 할당 할 수 있습니다. 다음 예는 변수에 값을 할당하는 방법을 보여줍니다.

DECLARE v_name VARCHAR (20) n_course VARCHAR (10) BEGIN v_name = 'edureka'v_course = 'sql'END /

초기화

선언 섹션에서도 변수 값을 초기화 할 수 있습니다. 다음 예제는 값을 변수로 초기화하는 방법을 보여줍니다.

DECLARE v_name VARCHAR (20) = 'edureka'n_course VARCHAR (10) = 'sql'BEGIN NULL END /

변수로 작업하는 방법을 알았으니 이제 PL / SQL에서 함수를 사용하는 방법을 이해해 보겠습니다.

PL / SQL의 기능

PL / SQL의 함수는 기본적으로 값을 반환하는 명명 된 블록입니다. 서브 루틴 또는 서브 프로그램이라고도합니다. 다음 구문은 PL / SQL에서 함수를 사용하는 방법을 보여줍니다.

CREATE [OR REPLACE] FUNCTION function_name [(parameter_1 [IN] [OUT] data_type, parameter_2 [IN] [OUT] data_type, parameter_N [IN] [OUT] data_type] RETURN return_data_type IS BEGIN 문 반환 return_data_type EXCEPTION END /

먼저 키워드 뒤에 함수 이름을 지정해야합니다. 함수 이름은 동사로 시작해야합니다. 함수에는 매개 변수에 지정하는 매개 변수가 없거나 하나 이상있을 수 있습니다. 각 매개 변수의 데이터 유형을 명시 적으로 지정하고 다음 중 하나를 수행 할 수있는 모드가됩니다.

  • 에 - IN 매개 변수는 읽기 전용 매개 변수입니다.

  • 밖 - 쓰기 전용 매개 변수입니다.

  • IN OUT – IN OUT 매개 변수는 모두 읽기-쓰기 매개 변수입니다.

다음은 PL / SQL에서 함수를 사용하는 방법을 보여주는 간단한 예입니다.

함수 생성 또는 교체 try_parse (iv_number IN VARCHAR2) RETURN NUMBER IS BEGIN RETURN to_number (iv_number) EXCEPTION WHEN other THEN RETURN NULL END

함수 호출

다음 예제에서 익명 블록에서 만든 함수를 호출 해 보겠습니다.

SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_x number n_y number n_z number BEGIN n_x : = try_parse ( '256') n_y : = try_parse ('29 .72 ') n_z : = try_parse ('pqrs ') DBMS_OUTPUT.PUT_LINE (n_x) DBMS_OUTPUT.PUT_LINE ( n_y) DBMS_OUTPUT.PUT_LINE (n_z) END /

SELECT 문에서도 함수를 호출 할 수 있습니다. 이제 PL / SQL에서 함수를 사용하는 방법을 알았으므로 PL / SQL에서 프로 시저를 사용하는 방법을 이해해 보겠습니다.

PL / SQL 절차

프로시 저는 기본적으로 특정 작업을 수행하는 블록입니다. 절차를 사용하여 복잡한 비즈니스 로직을 랩핑하거나 캡슐화하고이를 애플리케이션 및 데이터베이스 계층 모두에서 재사용 할 수 있습니다.

절차가 PL / SQL에서 어떻게 작동하는지 이해하기 위해 간단한 예제를 살펴 보겠습니다.

생성 또는 교체 절차 adjust_salary (in_employee_id IN EMPLOYEES.EMPLOYEE_ID % TYPE, in_percent IN NUMBER) IS BEGIN-직원 급여 업데이트 직원 업데이트 SET 급여 = 급여 + 급여 * in_percent / 100 WHERE employee_id = in_employee_id END

위의 예에서 두 개의 매개 변수가 있습니다. 프로시 저는 주어진 백분율로 급여를 조정하고 UPDATE 키워드는 급여 정보의 값을 업데이트합니다.

절차 헤더

키워드 IS 앞의 섹션을 프로 시저 헤더라고합니다. 다음은 절차에 대해 작업하는 동안 알아야 할 몇 가지 지침입니다.

  • 스키마 – 프로 시저가 속한 스키마의 선택적 이름입니다.

  • 이름 – 동사로 시작해야하는 프로 시저의 이름입니다.

  • 매개 변수 – 선택적 매개 변수 목록입니다.

  • AUTHID – 프로 시저가 현재 사용자 또는 프로 시저의 원래 소유자의 권한으로 실행되는지 여부를 결정합니다.

절차 본문

IS 키워드 뒤에 오는 모든 것을 프로 시저 본문이라고합니다. 프로 시저 본문에는 선언, 예외 및 실행 문이 있습니다. 함수와 달리 프로 시저의 RETURN 키워드는 실행을 중지하고 제어를 호출자에게 반환하는 데 사용됩니다.

절차 호출

PL / SQL에서 프로 시저를 호출하는 방법을 살펴 보겠습니다.

EXEC 절차 _ 이름 (param1, param2 & hellipparamN)

EXEC 키워드와 프로 시저 이름 만 사용하여 매개 변수없이 프로 시저를 호출 할 수 있습니다. 이제 프로 시저로 작업하는 방법을 알았으므로 PL / SQL에서 중첩 블록이 사용되는 방법을 이해해 보겠습니다.

중첩 된 블록

중첩 된 블록은 하나 이상의 PL / SQL 블록의 조합 일 뿐이며 프로그램의 실행 및 예외적 인 처리를 더 잘 제어 할 수 있습니다.

다음은 중첩 된 블록의 간단한 예입니다.

SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_emp_id EMPLOYEES.EMPLOYEE_ID % TYPE : = & emp_id1 BEGIN DECLARE n_emp_id employee.employee_id % TYPE : = & emp_id2 v_name workers.first_name % TYPE BEGIN SELECT first_id INTO v_name FROM 직원 WHERE employee_id = n_emp_LINE 직원의 '|| n_emp_id ||'는 '|| v_name) EXCEPTION WHEN no_data_found THEN DBMS_OUTPUT.PUT_LINE ('Employee '|| n_emp_id ||'not found ') END END /

위의 예에서 외부 PL / SQL 블록은 상위 블록 또는 둘러싸는 블록으로 알려져 있고, 내부 블록은 하위 블록 또는 포함 된 블록으로 알려져 있습니다.

실행 중에 자식 블록 변수가 부모 블록 변수를 재정의하기 때문에 두 블록에서 동일한 이름의 변수를 사용하는 것은 좋은 생각이 아닙니다. PL / SQL이 자체 블록 내의 변수에 우선 순위를 부여하기 때문에 발생합니다.

블록 라벨

레이블을 사용하여 블록 내부의 변수를 참조하는 데 도움이되는 블록 레이블로이 문제를 극복 할 수 있습니다.

다음은 블록 레이블을 사용하는 방법을 보여주는 간단한 예입니다.

 <>선언 ... 시작 ... 끝

블록 레이블을 사용하면 코드의 가독성을 높이고 제어력을 높이고 블록을 참조하는 데 도움이됩니다. 중첩 된 블록으로 작업하는 방법을 알았으니 이제 PL / SQL에서 IF STATEMENT가 어떻게 작동하는지 이해해 보겠습니다.

IF 문

PL / SQL에는 세 개의 IF 문이 있습니다.

  • IF-THEN – 조건이 참이면 명령문이 실행되고 조건이 거짓이면 아무 작업도 수행하지 않는 가장 간단한 IF STATEMENT입니다.

  • IF-THEN-ELSE – 여기에서 ELSE 절이 대체 명령문 시퀀스에 추가됩니다.

  • IF-THEN-ELSEIF – 여러 테스트 조건을 순서대로 실행할 수 있습니다.

IF-THEN 구문

IF 조건 THEN sequence_of_statements END IF

IF-THEN-ELSE 구문

IF 조건 THEN sequence_of_if_statements ELSE sequence_of_else_statements END IF

IF-THEN-ELSEIF 구문

IF 조건 1 THEN sequence_of_statements1 ELSIF 조건 2 THEN sequence_of_statements2 ELSE sequence_of_statements3 END IF

이제 IF STATEMENT를 마쳤으므로 PL / SQL의 CASE 문을 살펴 보겠습니다.

CASE 문

CASE 문은 기본적으로 선택자를 기반으로 일련의 문을 실행하는 데 도움이됩니다. 이 경우 선택자는 무엇이든 될 수 있으며 변수, 함수 또는 간단한 표현식이 될 수 있습니다. 다음은 PL / SQL에서 CASE 문의 구문을 보여주는 간단한 예입니다.

[<>] CASE [TRUE | 선택자] WHEN expression1 THEN sequence_of_statements1 WHEN expression2 THEN sequence_of_statements2 ... WHEN expressionN THEN sequence_of_statementsN [ELSE sequence_of_statementsN + 1] END CASE [label_name]

위의 구문에서 CASE 키워드 뒤에 선택자가 나옵니다. PL / SQL은 선택기를 한 번만 평가하여 실행해야하는 명령문을 결정합니다.

선택자 뒤에는 WHEN 키워드가 있습니다. 표현식이 선택자를 충족하면 THEN 키워드 이후에 해당하는 문이 실행됩니다.

이제 CASE 문을 사용하는 방법을 알았으므로 PL / SQL에서 루프 문을 사용하는 방법을 이해해 보겠습니다.

루프 문

PL / SQL의 루프 문은 일련의 문을 여러 번 실행할 수있는 반복 문입니다. 다음은 PL / SQL에서 루프 문의 구문을 보여주는 간단한 예입니다.

LOOP sequence_of_statements END LOOP

LOOP 및 END LOOP 키워드 사이에 적어도 하나의 실행 가능한 명령문이 있어야합니다.

EXIT 문을 사용한 루프

EXIT 및 EXIT when 문을 사용하면 루프를 종료 할 수 있습니다. EXIT WHEN 문은 조건부로 루프를 종료하고 EXIT는 무조건 실행을 종료합니다.

LOOP ... EXIT WHEN 조건 END LOOP

루프 레이블

루프 레이블은 중첩 루프에서 사용될 때 루프 카운터 변수의 이름을 한정하는 데 사용됩니다. 다음은 루프 레이블의 구문입니다.

 <>LOOP sequence_of_statements END LOOP 레이블

이제 루프 문을 사용하는 방법을 알았으므로 더 나은 이해를 위해 while 루프 문을 살펴 보겠습니다.

While 루프 문

실행이 시작될 때까지 실행 횟수가 정의되지 않은 경우 WHILE 루프 문을 사용할 수 있습니다. 다음 구문은 PL / SQL의 WHILE 루프 문에 사용됩니다.

WHILE 조건 LOOP sequence_of_statements END LOOP

구문의 조건은 TRUE, FALSE 또는 NULL로 평가되는 부울 값 또는 표현식입니다. 조건이 TRUE이면 문이 실행되고 FALSE이면 실행이 중지되고 제어가 다음 실행 문으로 이동합니다.

이제 WHILE 루프 문을 사용하는 방법을 알았으니 FOR 루프 문을 살펴 보겠습니다.

For 루프 문

PL / SQL의 FOR 루프 문을 사용하면 일련의 문을 일정 횟수 동안 실행할 수 있습니다. 다음은 PL / SQL에서 FOR 루프 문을 사용하는 구문입니다.

FOR loop_counter IN [REVERSE] lower_bound .. high_bound LOOP sequence_of_statements END LOOP

PL / SQL은 루프에 대해 INTEGER 데이터 유형을 사용하여 로컬 변수 loop_counter를 자동으로 생성하므로 명시 적으로 선언 할 필요가 없습니다. lowerbound..higherbound는 루프가 반복되는 범위입니다. 또한 LOOP 및 END LOOP 키워드 사이에 실행 가능한 명령문이 하나 이상 있어야합니다.

이제 PL / SQL에서 루프 문을 사용하는 방법을 알았으므로 PL / SQL에서 예외적 인 처리를 살펴 보겠습니다.

뛰어난 핸들링

PL / SQL에서는 모든 종류의 오류가 예외로 처리됩니다. 예외는 실행 흐름을 변경하거나 변경할 수있는 특수 조건으로 처리 될 수 있습니다. PL / SQL에는 두 가지 유형의 예외가 있습니다.

is-a 관계 자바
  • 시스템 예외 – 오류를 감지하면 PL / SQL 런타임에 의해 발생합니다.

  • 프로그래머 정의 예외 – 이러한 예외는 특정 응용 프로그램에서 프로그래머가 정의합니다.

예외 정의

PL / SQL의 예외는 발생하기 전에 선언되어야합니다. 아래 예제에서 한 것처럼 EXCEPTION 키워드를 사용하여 예외를 정의 할 수 있습니다.

EXCEPTION_NAME EXCEPTION

예외를 발생시키기 위해 RAISE 키워드를 사용합니다.

EXCEPTION_NAME 올리기

이것이 PL / SQL에 대한 모든 것이 었습니다.이 기사가 지식에 가치를 더하는 데 도움이 되었기를 바랍니다. SQL 또는 데이터베이스에 대한 자세한 내용은 여기에서 포괄적 인 읽기 목록을 참조 할 수 있습니다. .

MySQL에 대한 구조화 된 교육을 받으려면 다음을 확인하십시오. 강사 주도의 라이브 교육 및 실제 프로젝트 경험과 함께 제공됩니다. 이 교육은 MySQL을 심층적으로 이해하고 주제에 대한 숙달을 달성하는 데 도움이됩니다.

질문이 있으십니까? ”의 댓글 섹션에 언급하십시오. PL / SQL 자습서 ”그러면 다시 연락 드리겠습니다.