NDS가 성능이 낮아서 사용을 꺼리는 경우가 있는데, 9i에 들어와서 성능이 많이 개선되었다고 한다.
성능이 개선되지 않았을 때에도 프로그램 유지 보수성, 가독성등 여러가지 측면을 따져보았을 때 약간의 성능을 버리더라도 NDS를 사용하는것이 유리한 경우가 많았다.
NDS에 대한 자세한 정보는 다음 링크를 보거나 ORACLE에서 제공하는 메뉴얼을 읽기 바란다. 정말 잘 되어 있다.
http://www.oracle.com/technetwork/issue-archive/o64sql-095035.html
NDS는 다음으로 구성된다
EXECUTE IMMEDIATE sql_string [INTO variable_list ] [USING bind_variable_list ]
이 간결한 문법을 보라! 오라클이 강력한 이유중 하나는 문법이 간결해서인것 같다.
대부분의 리더를 위해서 예제부터 들어간다.
-------------------
동적 쿼리에서 파라미터 사용과 반환값 받기
EXECUTE IMMEDIATE 'SELECT COUNT(1) FROM STUDENTS WHERE FIRST_NAME = :1' INTO C USING 'Brian'
포인트는 반환값을 설정하기 위해서 select 문에 into 구문이 들어가지 않는다는 점이다.
여러 컬럼을 반환하고자 할 때에는 into 절에 여러 변수를 병렬로 지정한다.
그리고 where절을 보면 :1 바인드 변수를 사용하는데 1이라는 숫자는 가독성을 위한 것이지 의미가 있지는 않다. USING에 나열된 순서대로 바인드 변수에 차례대로 적용시킨다.