Megosztás:


SQL-nyelvhelyesség kiválasztása

Az SQL-utasítások létrehozásakor az első döntés, hogy melyik nyelvtant kell használni. A különböző szabványtestületek (például open group, ANSI és ISO) által elérhető nyelvtanok mellett gyakorlatilag minden DBMS-gyártó saját nyelvhelyességet határoz meg, amelyek mindegyike kissé eltér a szabványtól.

A C függelék: AZ SQL-nyelvhelyesség azt a minimális SQL-nyelvtant írja le, amelyet minden ODBC-illesztőprogramnak támogatnia kell. Ez a grammatikája az SQL-92 alapszintjének egy részhalmaza. Az illesztőprogramok további nyelvtant is támogathatnak, hogy megfeleljenek az SQL-92 által meghatározott köztes, teljes vagy FIPS 127-2 átmeneti szinteknek. További információért lásd a SQL Minimum Szintaxis címet a C függelékben: SQL Nyelvtan és SQL-92.

A C függelék olyan feloldósorozatokat is definiál, amelyek standard nyelvtant tartalmaznak az SQL-92 nyelvhelyesség által nem érintett általánosan elérhető nyelvi funkciókhoz, például külső illesztésekhez. További információért lásd: ODBC Escape Sequences a C függelékben: SQL Nyelvtan, valamint a Escape Sequences című részt később ebben a szakaszban.

A választott nyelvhelyesség befolyásolja, hogy az illesztőprogram hogyan dolgozza fel az utasítást. Az illesztőprogramoknak módosítaniuk kell az SQL-92 SQL-t és az ODBC által definiált menekülési sorozatokat DBMS-specifikus SQL-re. Mivel a legtöbb SQL-nyelvhelyesség egy vagy több különböző szabványon alapul, a legtöbb illesztőprogram alig vagy egyáltalán nem tesz eleget ennek a követelménynek. Gyakran csak az ODBC által definiált menekülési sorozatok kereséséből és DBMS-specifikus nyelvtanra való lecseréléséből áll. Ha egy illesztőprogram nyelvhelyességi hibát tapasztal, azt feltételezi, hogy a nyelvhelyesség DBMS-specifikus, és az SQL-utasítást az adatforrás módosítása nélkül továbbítja a végrehajtáshoz.

Ezért valójában két nyelvtani lehetőség közül választhat: az SQL-92-nyelvtan (és az ODBC-feloldósorozatok) és egy DBMS-specifikus nyelvtan. A kettő közül csak az SQL-92 nyelvhelyesség interoperábilis, ezért minden interoperábilis alkalmazásnak használnia kell. A nem együttműködő alkalmazások használhatják az SQL-92-nyelvtant vagy a DBMS-specifikus nyelvtant. A DBMS-specifikus nyelvtanok két előnnyel rendelkeznek: kihasználhatják az SQL-92 által nem lefedett funkciókat, és kis mértékben gyorsabbak, mert az illesztőprogramnak nem kell módosítania őket. Az utóbbi funkció részlegesen érvényesíthető a SQL_ATTR_NOSCAN utasítás attribútum beállításával, amely megakadályozza, hogy az illesztőprogram menekülő sorozatokat keressen és helyettesítsen.

Ha az SQL-92 nyelvhelyességet használja, az alkalmazás az SQLNativeSql meghívásával felfedezheti, hogyan módosítja az illesztőprogram. Ez gyakran hasznos alkalmazások hibakeresésekor. Az SQLNativeSql elfogad egy SQL-utasítást, és visszaadja azt az illesztőprogram módosítása után. Mivel ez a függvény a Core felület megfelelőségi szintjén van, az összes illesztőprogram támogatja.