본문 바로가기
카테고리 없음

오라클 동적 쿼리 사용법 & 예제 (PL/SQL)

by sftt 2023. 12. 29.

오라클 동적 쿼리 사용법 & 예제 (PL/SQL)

1. 동적 쿼리란?

동적 쿼리(dynamic query)는 실행 시에 동적으로 생성되거나 변경되는 SQL 구문을 의미합니다. 정적 쿼리와 달리 컴파일 시에 생성되는 것이 아니라, 실행 시에 동적으로 구조가 결정되는 특징이 있습니다. 오라클 PL/SQL에서 동적 쿼리를 사용하려면 문자열 변수를 사용하여 쿼리를 동적으로 생성하고 EXECUTE IMMEDIATE 문을 사용하여 실행해야 합니다.

2. 동적 쿼리 사용법

동적 쿼리를 사용하기 위해서는 다음의 순서로 진행합니다.

  1. 동적 쿼리를 생성할 문자열 변수 선언
  2. 문자열 변수에 동적으로 생성할 쿼리 구문 작성
  3. EXECUTE IMMEDIATE 문을 사용하여 동적 쿼리를 실행

3. 동적 쿼리 적용 예제

3.1 특정 테이블의 레코드 조회

다음은 동적 쿼리를 사용하여 특정 테이블의 레코드를 조회하는 예제입니다.

DECLARE
    table_name VARCHAR2(100) := 'employees';  -- 조회할 테이블 이름
    query_str VARCHAR2(200);
BEGIN
    -- 동적 쿼리 생성
    query_str := 'SELECT * FROM ' || table_name;

    -- 동적 쿼리 실행
    EXECUTE IMMEDIATE query_str;
END;
/

3.2 WHERE 절 조건 동적으로 변경

다음은 동적 쿼리를 사용하여 WHERE 절의 조건을 동적으로 변경하는 예제입니다.

DECLARE
    table_name VARCHAR2(100) := 'employees';  -- 조회할 테이블 이름
    query_str VARCHAR2(200);
    condition_str VARCHAR2(100) := 'department_id = 10';  -- 조건으로 사용할 문자열
BEGIN
    -- 동적 쿼리 생성
    query_str := 'SELECT * FROM ' || table_name || ' WHERE ' || condition_str;

    -- 동적 쿼리 실행
    EXECUTE IMMEDIATE query_str;
END;
/

3.3 동적으로 테이블 생성

다음은 동적 쿼리를 사용하여 테이블을 동적으로 생성하는 예제입니다.

DECLARE
    table_name VARCHAR2(100) := 'employees';  -- 생성할 테이블 이름
    query_str VARCHAR2(200);
BEGIN
    -- 동적 쿼리 생성
    query_str := 'CREATE TABLE ' || table_name || ' (id NUMBER, name VARCHAR2(100))';

    -- 동적 쿼리 실행
    EXECUTE IMMEDIATE query_str;
END;
/

이처럼 오라클 PL/SQL에서는 문자열 변수를 사용하여 동적으로 쿼리를 생성하고, EXECUTE IMMEDIATE 문을 사용하여 실행할 수 있습니다. 동적 쿼리를 사용함으로써 다양한 조건에 따른 유연한 쿼리를 작성할 수 있습니다. 그러나 잘못된 사용은 SQL 주입(SQL Injection) 공격 등 보안 취약점이 될 수 있으므로, 반드시 신뢰할 수 있는 소스로부터의 입력을 사용하고, 적절한 보안 조치를 취해야 합니다.

댓글