Mengatur Nilai Parameter
Untuk mengatur nilai parameter, aplikasi hanya mengatur nilai variabel yang terikat ke parameter . Tidak penting ketika nilai ini diatur, selama diatur sebelum pernyataan dijalankan. Aplikasi dapat mengatur nilai sebelum atau sesudah mengikat variabel, dan dapat mengubah nilai sebanyak yang diinginkan. Ketika pernyataan dijalankan, driver hanya mengambil nilai variabel saat ini. Ini sangat berguna ketika pernyataan yang disiapkan dijalankan lebih dari sekali; aplikasi menetapkan nilai baru untuk beberapa atau semua variabel setiap kali pernyataan dijalankan. Untuk contoh ini, lihat Eksekusi yang Disiapkan, sebelumnya di bagian ini.
Jika buffer panjang/indikator terikat dalam panggilan ke SQLBindParameter, buffer harus diatur ke salah satu nilai berikut sebelum pernyataan dijalankan:
Panjang byte data dalam variabel terikat. Driver memeriksa panjang ini hanya jika variabel adalah karakter atau biner (ValueType SQL_C_CHAR atau SQL_C_BINARY).
SQL_NTS. Data adalah string null-terminated.
SQL_NULL_DATA. Nilai data adalah NULL, dan driver mengabaikan nilai variabel terikat.
SQL_DATA_AT_EXEC atau hasil makro SQL_LEN_DATA_AT_EXEC. Nilai parameter akan dikirim dengan SQLPutData. Untuk informasi selengkapnya, lihat Mengirim Data Panjang, nanti di bagian ini.
Tabel berikut menunjukkan nilai variabel terikat dan buffer panjang/indikator yang ditetapkan aplikasi untuk berbagai nilai parameter.
Parameter value |
Parameter (SQL) jenis data |
Variabel (C) jenis data |
Nilai dalam Terikat variabel |
Nilai dalam panjang/indikator buffer[d] |
---|---|---|---|---|
"ABC" | SQL_CHAR | SQL_C_CHAR | ABC\0[a] | SQL_NTS atau 3 |
10 | SQL_INTEGER | SQL_C_SLONG | 10 | -- |
10 | SQL_INTEGER | SQL_C_CHAR | 10\0[a] | SQL_NTS atau 2 |
13:00. | SQL_TYPE_TIME | SQL_C_TYPE_TIME | 13,0,0[b] | -- |
13:00. | SQL_TYPE_TIME | SQL_C_CHAR | {t '13:00:00'}\0[a], [c] | SQL_NTS atau 14 |
NULL | SQL_SMALLINT | SQL_C_SSHORT | -- | SQL_NULL_DATA |
[a] "\0" mewakili karakter null-termination. Karakter penghentian null diperlukan hanya jika nilai dalam buffer panjang/indikator SQL_NTS.
[b] Angka dalam daftar ini adalah angka yang disimpan dalam bidang struktur TIME_STRUCT.
[c] String menggunakan klausul escape tanggal ODBC. Untuk informasi selengkapnya, lihat Literal Tanggal, Waktu, dan Tanda Waktu.
[d] Driver harus selalu memeriksa nilai ini untuk melihat apakah itu nilai khusus, seperti SQL_NULL_DATA.
Apa yang dilakukan driver dengan nilai parameter pada waktu eksekusi tergantung pada driver. Jika perlu, driver mengonversi nilai dari jenis data C dan panjang byte variabel terikat ke jenis data SQL, presisi, dan skala parameter. Dalam kebanyakan kasus, driver kemudian mengirim nilai ke sumber data. Dalam beberapa kasus, ia memformat nilai sebagai teks dan menyisipkannya ke dalam pernyataan SQL sebelum mengirim pernyataan ke sumber data.