더북(TheBook)

핵심정리

  1 컴파일 타임이 아닌 실행 시에 SQL 문장을 구성해 실행하는 것을 동적 SQL이라고 한다.

  2 동적 SQL은 SQL 문장을 문자열 형태로 만들어 실행하므로, 컴파일할 때 각종 문법적 오류가 검증되는 정적 SQL과는 달리 실행 시점에 오류가 검출된다.

  3 동적 SQL을 처리하는 방식으로는 NDS와 DBMS_SQL 패키지를 이용하는 방법이 있으며, 일반 SQL 문장 뿐만 아니라 DDL 문도 PL/SQL 방식으로 처리할 수 있다.

  4 NDS는 EXECUTE IMMEDIATE문을 사용하는데 SELECT문은 반환되는 로우가 1개이면 EXECUTE IMMEDIATE를, 1개 이상이면 OPEN FOR문을 사용한다.

  5 EXECUTE IMMEDIATE문에서 USING 절로 바인드 변수를 사용할 수 있다.

  6 DBMS_SQL 패키지는 ‘커서 열기(OPEN_CURSOR) → 파싱(PARSE) → 바인드 변수 연결(BIND_VARIABLE 혹은 BIND_ARRAY) → 컬럼 정의(DEFINE_COLUMN) → 쿼리 실행(EXECUTE) → 결과 패치(FETCH_ROWS) → 패치된 결과 값 받아오기(COLUMN_VALUE ) → 커서 닫기(CLOSE_CURSOR)’까지 총 8단계에 걸쳐 동적 SQL을 처리한다.

  7 11g부터 제공하는 DBMS_SQL.TO_REFCURSOR 함수는 커서 번호를 SQL 커서 타입으로 변환해 NDS 방식으로 처리할 수 있게 하며, 반면 DBMS_SQL.TO_CURSOR_NUMBER 함수는 SQL 커서 타입을 커서 번호로 변환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.