Bagikan melalui


Memilih Tata Bahasa SQL

Keputusan pertama yang harus dibuat saat membuat pernyataan SQL adalah tata bahasa mana yang akan digunakan. Selain tata bahasa yang tersedia dari berbagai bodi standar, seperti Open Group, ANSI, dan ISO, hampir setiap vendor DBMS mendefinisikan tata bahasanya sendiri, yang masing-masing sedikit bervariasi dari standar.

Lampiran C: Tata Bahasa SQL, menjelaskan tata bahasa SQL minimum yang harus didukung semua driver ODBC. Tata bahasa ini adalah subset dari Tingkat entri SQL-92. Driver dapat mendukung tata bahasa tambahan agar sesuai dengan tingkat Transisi Menengah, Penuh, atau FIPS 127-2 yang ditentukan oleh SQL-92. Untuk informasi selengkapnya, lihat Tata Bahasa Minimum SQL di Lampiran C: Tata Bahasa SQL, dan SQL-92.

Lampiran C juga mendefinisikan urutan escape yang berisi tata bahasa standar untuk fitur bahasa yang umum tersedia, seperti gabungan luar, yang tidak tercakup oleh tata bahasa SQL-92. Untuk informasi selengkapnya, lihat ODBC Escape Sequences di Lampiran C: Tata Bahasa SQL, dan Urutan Escape, nanti di bagian ini.

Tata bahasa yang dipilih memengaruhi cara driver memproses pernyataan. Driver harus memodifikasi SQL-92 SQL dan urutan escape yang ditentukan ODBC ke SQL khusus DBMS. Karena sebagian besar tata bahasa SQL didasarkan pada satu atau beberapa standar, sebagian besar driver melakukan sedikit atau tidak ada pekerjaan untuk memenuhi persyaratan ini. Sering kali hanya terdiri dari mencari urutan escape yang ditentukan oleh ODBC dan menggantinya dengan tata bahasa khusus DBMS. Ketika driver mengalami tata bahasa yang tidak dikenalinya, ia mengasumsikan tata bahasa khusus DBMS dan meneruskan pernyataan SQL tanpa modifikasi ke sumber data untuk dieksekusi.

Oleh karena itu, benar-benar ada dua pilihan tata bahasa yang akan digunakan: tata bahasa SQL-92 (dan urutan pelarian ODBC) dan tata bahasa khusus DBMS. Dari keduanya, hanya tata bahasa SQL-92 yang dapat dioperasikan, sehingga semua aplikasi yang dapat dioperasikan harus menggunakannya. Aplikasi yang tidak dapat dioperasikan dapat menggunakan tata bahasa SQL-92 atau tata bahasa khusus DBMS. Tata bahasa khusus DBMS memiliki dua keuntungan: Mereka dapat mengeksploitasi fitur apa pun yang tidak tercakup oleh SQL-92, dan secara marginal lebih cepat karena driver tidak perlu memodifikasinya. Fitur terakhir dapat diberlakukan sebagian dengan mengatur atribut pernyataan SQL_ATTR_NOSCAN, yang menghentikan driver mencari dan mengganti urutan escape.

Jika tata bahasa SQL-92 digunakan, aplikasi dapat menemukan bagaimana ia dimodifikasi oleh driver dengan memanggil SQLNativeSql. Ini sering berguna saat men-debug aplikasi. SQLNativeSql menerima pernyataan SQL dan mengembalikannya setelah driver memodifikasinya. Karena fungsi ini berada dalam tingkat kesuaian antarmuka Core, fungsi ini didukung oleh semua driver.