[Oracle PL/SQL] Static SQL VS Dynamic SQL

코린이·2024년 9월 19일

ORACLE PL/SQL

목록 보기
5/7

Static SQL

Static SQL은 PL/SQL 명령문에서 직접 SQL 구문을 사용할 수 있게 해주는 PL/SQL의 기능이며, 별도로 명시된 경우를 제외하면 일반적인 SQL과 구문이 동일하다.

즉, PL/SQL에서 사용되는 일반적인 SQL 구문을 생각하면 된다.

Dynamic SQL

Dynamic SQL은 런타임에 SQL 구문을 생성하고 실행하기 위한 프로그래밍 방법론이다.

하드코딩이 되어있는 Static SQL과 다르게 SQL 구문에 변수를 사용하여 쿼리를 동적으로 만들 수 있다.

하지만, Dynamic SQL은 매번 파싱되기 때문에 성능이 떨어진다.

DECLARE
   
    TB_COL   VARCHAR2(1000);                --테이블 컬럼 변수
    QUARRY   VARCHAR2(1000);                --쿼리 변수
    V_RESULT VARCHAR2(50);                  --결과값 변수
    P_ID     STUDENT.NAME%TYPE := 'A0001';  --파라미터 변수
   
BEGIN

    TB_COL := 'NAME';                       --특정 칼럼 지목
    QUARRY := 'SELECT ' || TB_COL || ' FROM STUDENT WHERE ID = :ID';  --쿼리 변수 작성
   
   
    --EXECUTE IMMEDIATE문은 문자열로 작성된 쿼리문을 실행 가능한 쿼리문으로 준비해주는 역할을 한다.
    --INTO문을 사용하여 결과값을 V_RESULT에 할당
    EXECUTE IMMEDIATE QUARRY INTO V_RESULT  
    USING P_ID;  --사용할 파라미터 설정(P_ID 변수 값이 :ID에 바인딩)
   
END;
   

🧑🏻‍💻 Reference

오라클 PL/SQL Dynamic SQL

0개의 댓글