② 파싱
문자열 형태의 동적 SQL 문장을 파싱하는 과정으로, 해당 SQL 문장을 이전 단계에서 열었던 커서 ID 값과 연결하고 구문 검사를 수행한다. 파싱은 PARSE 프로시저를 호출해서 수행한다. PARSE 프로시저는 총 3가지 버전이 있다. 즉 함수 오버로딩 기능을 적용한 매개변수가 다른 PARSE 프로시저가 3개 존재하는데, 이중 가장 기본 형태를 살펴 보자.
DBMS_SQL.PARSE (
c IN INTEGER,
statement IN VARCHAR2,
language_flag IN INTEGER,
edition IN VARCHAR2 DEFAULT NULL,
apply_crossedition_trigger IN VARCHAR2 DEFAULT NULL,
fire_apply_trigger IN BOOLEAN DEFAULT TRUE);
• c: 파싱할 문장에 대한 커서 ID로 OPEN_CUSRSOR 함수 반환 값을 받는다.
• statement: 동적 SQL문. 즉 문자열 형태의 동적 SQL문장
• l anguage_flag: DBMS_SQL 패키지에서 설정한 상수인 NATIVE(실제 값은 1), 무조건 DBMS_SQL.NATIVE를 명시한다.
나머지 3개 매개변수는 생략이 가능하며 이 버전 이외의 다른 두 PARSE 프로시저는 SQL 문장이 들어오는 statement 매개변수의 타입이 각각 CLOB와 VARCHAR2A이다. CLOB는 LOB 타입의 한 종류이고, VARCHAR2A는 DBMS_SQL 패키지에 정의된 컬렉션 타입으로 VARCHAR2(32767) 타입의 항목으로 구성된 연관 배열이다.
TYPE varchar2a IS TABLE OF VARCHAR2(32767) INDEX BYBINARY_INTEGER;