③ DBMS_SQL.TO_CURSOR_NUMBER 함수
눈치 빠른 독자라면 알아챘겠지만, 이전 예제에서 TO_REFCURSOR 함수를 사용한 이후부터는 DBMS_SQL이 아닌 NDS 방식으로 코딩을 했다. 동적 SQL에서는 NDS든 DBMS_SQL이든 내부적으로는 커서를 사용해 처리되는데, NDS는 커서 타입이 사용되며 DBMS_SQL은 숫자형태인 커서 번호가 사용된다. 따라서 DBMS_SQL 패키지에서 사용하는 커서 번호를 커서 타입으로 변환하는 함수가 TO_REFCURSOR 함수인 것이다.
이와는 반대로 NDS에서 사용하는 커서 타입을 숫자형인 커서 번호로 변환하는 함수가 존재하는데 바로 DBMS_SQL.TO_CURSOR_NUMBER 함수다.
DBMS_SQL.TO_CURSOR_NUMBER(
rc IN OUT SYS_REFCURSOR)
RETURN INTEGER;
• rc: 변환할 REF CURSOR 형인 커서
• 반환 값: 커서 번호
TO_REFCURSOR 함수를 사용하면 DBMS_SQL 패키지로 실행까지 마친 커서를 NDS로 변환해 사용할 수 있고, 반대로 TO_CURSOR_NUMBER 함수를 사용하면 NDS 방식으로 실행까지 마친 REF CURSOR를 커서 번호로 변환해 나머지 부분은 DBMS_SQL 패키지를 사용해 처리할 수 있다.