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