SQL 문법 선택
SQL 문을 생성할 때 가장 먼저 결정하는 것은 사용할 문법입니다. Open Group, ANSI 및 ISO와 같은 다양한 표준 본문에서 사용할 수 있는 문법 외에도 거의 모든 DBMS 공급업체는 자체 문법을 정의하며 각 문법은 표준과 약간 다릅니다.
부록 C: SQL 문법은 모든 ODBC 드라이버에서 지원해야 하는 최소 SQL 문법을 설명합니다. 이 문법은 SQL-92 항목 수준의 하위 집합입니다. 드라이버는 SQL-92에서 정의된 중간, 전체 또는 FIPS 127-2 전환 수준을 준수하도록 추가 문법을 지원할 수 있습니다. 자세한 내용은 부록 C: SQL 문법 및 SQL-92의 SQL 최소 문법을 참조하세요.
부록 C는 또한 SQL-92 문법에서 다루지 않는 외부 조인과 같이 일반적으로 사용 가능한 언어 기능에 대한 표준 문법을 포함하는 이스케이프 시퀀스를 정의합니다. 자세한 내용은 이 섹션의 뒷부분에 있는 부록 C: SQL 문법 및 이스케이프 시퀀스의 ODBC 이스케이프 시퀀스를 참조하세요.
선택한 문법은 드라이버가 문을 처리하는 방식에 영향을 줍니다. 드라이버는 SQL-92 SQL 및 ODBC 정의 이스케이프 시퀀스를 DBMS 관련 SQL로 수정해야 합니다. 대부분의 SQL 문법은 다양한 표준 중 하나 이상을 기반으로 하기 때문에 대부분의 드라이버는 이 요구 사항을 충족하기 위해 거의 또는 전혀 작업을 수행하지 않습니다. 종종 ODBC에서 정의한 이스케이프 시퀀스를 검색하여 DBMS별 문법으로 바꾸는 것으로만 구성됩니다. 드라이버가 인식할 수 없는 문법을 발견하면 문법이 DBMS 관련이라고 가정하고 실행을 위해 데이터 원본을 수정하지 않고 SQL 문을 전달합니다.
따라서 SQL-92 문법(및 ODBC 이스케이프 시퀀스) 및 DBMS 관련 문법이라는 두 가지 문법을 선택할 수 있습니다. 둘 중 SQL-92 문법만 상호 운용 가능하므로 상호 운용 가능한 모든 애플리케이션에서 사용해야 합니다. 상호 운용할 수 없는 애플리케이션은 SQL-92 문법 또는 DBMS 관련 문법을 사용할 수 있습니다. DBMS 관련 문법에는 SQL-92에서 다루지 않는 모든 기능을 악용할 수 있으며 드라이버가 수정할 필요가 없으므로 약간 더 빠릅니다. 후자의 기능은 드라이버가 이스케이프 시퀀스를 검색하고 바꿀 수 없으므로 SQL_ATTR_NOSCAN 문 특성을 설정하여 부분적으로 적용할 수 있습니다.
SQL-92 문법을 사용하는 경우 애플리케이션은 SQLNativeSql을 호출하여 드라이버에서 수정하는 방법을 검색할 수 있습니다. 애플리케이션을 디버깅할 때 유용합니다. SQLNativeSql 은 SQL 문을 수락하고 드라이버가 수정한 후에 반환합니다. 이 함수는 Core 인터페이스 규칙 수준에 있으므로 모든 드라이버에서 지원됩니다.