절차형 SQL

절차형 SQL

절차형 SQL, 데이터베이스 관리 시스템(DBMS) 내에서 절차적 프로그래밍 언어의 기능을 제공하여 복잡한 작업을 수행할 수 있도록 돕는 확장 SQL입니다. 표준 SQL이 선언적(declarative)인 반면, 절차형 SQL은 프로그래밍 언어와 유사한 제어 구조와 변수 선언, 반복문 등을 활용해 절차적인 흐름을 정의할 수 있습니다.

절차형 SQL의 주요 특징

  1. 제어 구조 지원

    • 조건문(If-Else, Case)

    • 반복문(For, While, Loop)

  2. 변수 선언 및 사용

    • 작업 중 데이터를 저장하거나 계산 결과를 저장하기 위해 변수를 선언하고 사용할 수 있습니다.

  3. 예외 처리(Exception Handling)

    • 예상치 못한 오류나 조건에 대해 대처할 수 있는 구조를 제공합니다.

  4. 프로시저와 함수 지원

    • 복잡한 작업을 재사용 가능한 코드 블록으로 분리하여 관리할 수 있습니다.

절차형 SQL의 구성 요소

변수 선언

변수는 프로시저나 함수 내에서 데이터를 저장하거나 작업 중 활용됩니다.

DECLARE variable_name datatype [DEFAULT value];

예시:

DECLARE total_sales NUMBER(10, 2);

제어 구조

  • 조건문

IF condition THEN
   -- 실행 코드
ELSE
   -- 다른 실행 코드
END IF;

예시

IF total_sales > 1000 THEN
   DBMS_OUTPUT.PUT_LINE('High sales');
ELSE
   DBMS_OUTPUT.PUT_LINE('Low sales');
END IF;
  • 반복문

FOR i IN 1..10 LOOP
   -- 실행 코드
END LOOP;

프로시저

프로시저는 데이터베이스 작업을 처리하는 독립적인 코드 블록입니다.

CREATE OR REPLACE PROCEDURE procedure_name AS
BEGIN
   -- SQL 작업
END;

예시

CREATE OR REPLACE PROCEDURE calculate_bonus AS
BEGIN
   UPDATE employees
   SET bonus = salary * 0.1;
END;

함수

함수는 입력 값을 받아 특정 결과를 반환하는 코드 블록입니다.

CREATE OR REPLACE FUNCTION function_name RETURN return_datatype AS
BEGIN
   -- 작업 코드
   RETURN result;
END;

예시

CREATE OR REPLACE FUNCTION get_total_sales RETURN NUMBER AS
   total NUMBER;
BEGIN
   SELECT SUM(sales) INTO total FROM sales_table;
   RETURN total;
END;

예외 처리

BEGIN
   -- 실행 코드
EXCEPTION
   WHEN exception_name THEN
      -- 예외 처리 코드
END;

예시:

BEGIN
   SELECT salary INTO employee_salary FROM employees WHERE id = 101;
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE('No employee found with the given ID');
END;

절차형 SQL의 장점

  1. 복잡한 로직 처리 가능: 단순 쿼리로 처리하기 어려운 작업을 효율적으로 수행할 수 있습니다.

  2. 코드 재사용성: 프로시저와 함수로 반복적인 작업을 모듈화하여 관리합니다.

  3. 성능 향상: 서버 측에서 실행되므로 네트워크 트래픽 감소와 빠른 데이터 처리 가능.

절차형 SQL의 단점

  1. 학습 곡선: 표준 SQL보다 복잡하여 학습과 유지보수가 어려울 수 있습니다.

  2. DBMS 종속성: 절차형 SQL은 DBMS마다 문법이 다를 수 있습니다(예: PL/SQL, T-SQL 등).

주요 DBMS별 절차형 SQL 지원

  • Oracle: PL/SQL (Procedural Language/SQL)

  • SQL Server: T-SQL (Transact-SQL)

  • PostgreSQL: PL/pgSQL (Procedural Language/PostgreSQL)

절차형 SQL을 활용하면 데이터베이스의 강력한 기능을 극대화할 수 있습니다. 따라서, 데이터 중심 애플리케이션을 개발하거나 복잡한 작업을 효율적으로 처리하고자 할 때 유용하게 사용됩니다.

일반 SQL 내장 SQL 차이

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Loading...