Eksekusi Langsung ODBC
Eksekusi langsung adalah cara paling sederhana untuk menjalankan pernyataan. Ketika pernyataan dikirimkan untuk eksekusi, sumber data mengkompilasinya ke dalam rencana akses lalu menjalankan rencana akses tersebut.
Eksekusi langsung umumnya digunakan oleh aplikasi generik yang membangun dan menjalankan pernyataan pada waktu proses. Misalnya, kode berikut membangun pernyataan SQL dan menjalankannya satu kali:
SQLCHAR *SQLStatement;
// Build an SQL statement.
BuildStatement(SQLStatement);
// Execute the statement.
SQLExecDirect(hstmt, SQLStatement, SQL_NTS);
Eksekusi langsung berfungsi paling baik untuk pernyataan yang akan dijalankan satu kali. Kelemahan utamanya adalah bahwa pernyataan SQL diurai setiap kali dijalankan. Selain itu, aplikasi tidak dapat mengambil informasi tentang kumpulan hasil yang dibuat oleh pernyataan (jika ada) sampai setelah pernyataan dijalankan; ini dimungkinkan jika pernyataan disiapkan dan dijalankan dalam dua langkah terpisah.
Untuk menjalankan pernyataan secara langsung, aplikasi melakukan tindakan berikut:
Mengatur nilai parameter apa pun. Untuk informasi selengkapnya, lihat Parameter Pernyataan, nanti di bagian ini.
Memanggil SQLExecDirect dan meneruskannya string yang berisi pernyataan SQL.
Ketika SQLExecDirect dipanggil, driver:
Memodifikasi pernyataan SQL untuk menggunakan tata bahasa SQL sumber data tanpa mengurai pernyataan; ini termasuk mengganti urutan escape yang dibahas dalam Urutan Escape di ODBC. Aplikasi dapat mengambil bentuk pernyataan SQL yang dimodifikasi dengan memanggil SQLNativeSql. Urutan escape tidak diganti jika atribut pernyataan SQL_ATTR_NOSCAN diatur.
Mengambil nilai parameter saat ini dan mengonversinya seperlunya. Untuk informasi selengkapnya, lihat Parameter Pernyataan, nanti di bagian ini.
Mengirim pernyataan dan nilai parameter yang dikonversi ke sumber data untuk dieksekusi.
Mengembalikan kesalahan apa pun. Ini termasuk diagnostik urutan atau status seperti SQLSTATE 24000 (Status kursor tidak valid), kesalahan sindikat seperti SQLSTATE 42000 (Kesalahan sintaks atau pelanggaran akses), dan kesalahan semantik seperti SQLSTATE 42S02 (Tabel dasar atau tampilan tidak ditemukan).