Fungsi SQLSetStmtAttr

Kesesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 3.0: ISO 92

Ringkasan
SQLSetStmtAttr menetapkan atribut yang terkait dengan pernyataan.

Catatan

Untuk informasi selengkapnya tentang apa yang digunakan Manajer Driver memetakan fungsi ini ketika aplikasi ODBC 3.x bekerja dengan driver ODBC 2.x , lihat Memetakan Fungsi Penggantian untuk Kompatibilitas Aplikasi Mundur.

Sintaks

  
SQLRETURN SQLSetStmtAttr(  
     SQLHSTMT      StatementHandle,  
     SQLINTEGER    Attribute,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    StringLength);  

Argumen

StatementHandle
[Input] Handel pernyataan.

Atribut
[Input] Opsi untuk diatur, tercantum dalam "Komentar."

ValuePtr
[Input] Nilai yang akan dikaitkan dengan Atribut. Bergantung pada nilai Atribut, ValuePtr akan menjadi salah satu dari berikut ini:

  • Handel deskriptor ODBC.

  • Nilai SQLUINTEGER.

  • Nilai SQLULEN.

  • Penunjuk ke salah satu hal berikut ini:

    • String karakter yang dihentikan null.

    • Buffer biner.

    • Nilai atau array jenis SQLLEN, SQLULEN, atau SQLUSMALLINT.

    • Nilai yang ditentukan driver.

Jika argumen Atribut adalah nilai khusus driver, ValuePtr mungkin berupa bilangan bulat yang ditandatangani.

StringLength
[Input] Jika Atribut adalah atribut yang ditentukan ODBC dan ValuePtr menunjuk ke string karakter atau buffer biner, argumen ini harus panjangnya *ValuePtr. Jika Atribut adalah atribut yang ditentukan ODBC dan ValuePtr adalah bilangan bulat, StringLength diabaikan.

Jika Atribut adalah atribut yang ditentukan driver, aplikasi menunjukkan sifat atribut ke Driver Manager dengan mengatur argumen StringLength . StringLength dapat memiliki nilai berikut:

  • Jika ValuePtr adalah penunjuk ke string karakter, maka StringLength adalah panjang string atau SQL_NTS.

  • Jika ValuePtr adalah penunjuk ke buffer biner, maka aplikasi menempatkan hasil makro SQL_LEN_BINARY_ATTR(length) di StringLength. Ini menempatkan nilai negatif dalam StringLength.

  • Jika ValuePtr adalah penunjuk ke nilai selain string karakter atau string biner, string StringLength harus memiliki nilai SQL_IS_POINTER.

  • Jika ValuePtr berisi nilai panjang tetap, maka StringLength adalah SQL_IS_INTEGER atau SQL_IS_UINTEGER, yang sesuai.

Kembali

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, atau SQL_INVALID_HANDLE.

Diagnostik

Saat SQLSetStmtAttr mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO, nilai SQLSTATE terkait dapat diperoleh dengan memanggil SQLGetDiagRec dengan HandleType SQL_HANDLE_STMT dan Handle of StatementHandle. Tabel berikut mencantumkan nilai SQLSTATE yang umumnya dikembalikan oleh SQLSetStmtAttr dan menjelaskan masing-masing dalam konteks fungsi ini; notasi "(DM)" mendahului deskripsi SQLSTATEs yang dikembalikan oleh Driver Manager. Kode pengembalian yang terkait dengan setiap nilai SQLSTATE SQL_ERROR, kecuali disebutkan sebaliknya.

SQLSTATE Kesalahan Deskripsi
01000 Peringatan umum Pesan informasi khusus driver. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.)
01S02 Nilai opsi berubah Driver tidak mendukung nilai yang ditentukan dalam ValuePtr, atau nilai yang ditentukan dalam ValuePtr tidak valid karena kondisi kerja implementasi, sehingga driver menggantikan nilai yang sama. (SQLGetStmtAttr dapat dipanggil untuk menentukan nilai yang diganti sementara.) Nilai pengganti valid untuk StatementHandle hingga kursor ditutup, di mana atribut pernyataan kembali ke nilai sebelumnya. Atribut pernyataan yang dapat diubah adalah:

SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ATTR_ROW_ARRAY_SIZE SQL_ ATTR_SIMULATE_CURSOR

(Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.)
08S01 Kegagalan tautan komunikasi Tautan komunikasi antara driver dan sumber data tempat driver tersambung gagal sebelum fungsi selesai diproses.
24000 Status kursor tidak valid Atribut SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_SIMULATE_CURSOR, atau SQL_ATTR_USE_BOOKMARKS, dan kursor terbuka.
HY000 Kesalahan umum Terjadi kesalahan yang tidak ada SQLSTATE tertentu dan tidak ada SQLSTATE khusus implementasi yang ditentukan. Pesan kesalahan yang dikembalikan oleh SQLGetDiagRec di buffer *MessageText menjelaskan kesalahan dan penyebabnya.
HY001 Kesalahan alokasi memori Driver tidak dapat mengalokasikan memori yang diperlukan untuk mendukung eksekusi atau penyelesaian fungsi.
HY009 Penggunaan pointer null tidak valid Argumen Atribut mengidentifikasi atribut pernyataan yang memerlukan atribut string, dan argumen ValuePtr adalah pointer null.
HY010 Kesalahan urutan fungsi (DM) Fungsi eksekusi asinkron dipanggil untuk handel koneksi yang terkait dengan StatementHandle. Fungsi asinkron ini masih dijalankan ketika fungsi SQLSetStmtAttr dipanggil.

(DM) SQLExecute, SQLExecDirect, atau SQLMoreResults dipanggil untuk StatementHandle dan dikembalikan SQL_PARAM_DATA_AVAILABLE. Fungsi ini dipanggil sebelum data diambil untuk semua parameter yang dialirkan.

(DM) Fungsi eksekusi asinkron dipanggil untuk StatementHandle dan masih dijalankan ketika fungsi ini dipanggil.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos dipanggil untuk StatementHandle dan dikembalikan SQL_NEED_DATA. Fungsi ini dipanggil sebelum data dikirim untuk semua parameter atau kolom data-at-execution.
HY011 Atribut tidak dapat diatur sekarang Atribut SQL_ATTR_CONCURRENCY, SQL_ ATTR_CURSOR_TYPE, SQL_ ATTR_SIMULATE_CURSOR, atau SQL_ ATTR_USE_BOOKMARKS, dan pernyataan disiapkan.
HY013 Kesalahan manajemen memori Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah.
HY017 Penggunaan handel deskriptor yang dialokasikan secara otomatis tidak valid (DM) Argumen Atribut SQL_ATTR_IMP_ROW_DESC atau SQL_ATTR_IMP_PARAM_DESC.

(DM) Argumen Atribut SQL_ATTR_APP_ROW_DESC atau SQL_ATTR_APP_PARAM_DESC, dan nilai dalam ValuePtr adalah handel deskriptor yang dialokasikan secara implisit selain handel yang awalnya dialokasikan untuk ARD atau APD.
HY024 Nilai atribut tidak valid Mengingat nilai Atribut yang ditentukan, nilai yang tidak valid ditentukan dalam ValuePtr. (Manajer Driver mengembalikan SQLSTATE ini hanya untuk atribut koneksi dan pernyataan yang menerima serangkaian nilai diskrit, seperti SQL_ATTR_ACCESS_MODE atau SQL_ ATTR_ASYNC_ENABLE. Untuk semua atribut koneksi dan pernyataan lainnya, driver harus memverifikasi nilai yang ditentukan dalam ValuePtr.)

Argumen Atribut SQL_ATTR_APP_ROW_DESC atau SQL_ATTR_APP_PARAM_DESC, dan ValuePtr adalah handel deskriptor yang dialokasikan secara eksplisit yang tidak berada pada koneksi yang sama dengan argumen StatementHandle .
HY090 String atau panjang buffer tidak valid (DM) *ValuePtr adalah string karakter, dan argumen StringLength kurang dari 0 tetapi tidak SQL_NTS.
HY092 Pengidentifikasi atribut/opsi tidak valid (DM) Nilai yang ditentukan untuk atribut argumen tidak valid untuk versi ODBC yang didukung oleh driver.

(DM) Nilai yang ditentukan untuk atribut argumen adalah atribut baca-saja.
HY117 Koneksi ditangguhkan karena status transaksi yang tidak diketahui. Hanya fungsi putuskan sambungan dan baca-saja yang diizinkan. (DM) Untuk informasi selengkapnya tentang status ditangguhkan, lihat Fungsi SQLEndTran.
HYC00 Fitur opsional tidak diimplementasikan Nilai yang ditentukan untuk atribut argumen adalah atribut pernyataan ODBC yang valid untuk versi ODBC yang didukung oleh driver tetapi tidak didukung oleh driver.

Argumen Atribut SQL_ATTR_ASYNC_ENABLE, dan panggilan ke SQLGetInfo dengan InfoType SQL_ASYNC_MODE mengembalikan SQL_AM_CONNECTION.

Argumen Atribut SQL_ATTR_ENABLE_AUTO_IPD, dan nilai atribut koneksi SQL_ATTR_AUTO_IPD SQL_FALSE.
HYT01 Kesalahan waktu habis koneksi kedaluwarsa Periode batas waktu koneksi kedaluwarsa sebelum sumber data merespons permintaan. Periode batas waktu koneksi diatur melalui SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Driver tidak mendukung fungsi ini (DM) Driver yang terkait dengan StatementHandle tidak mendukung fungsi.
S1118 Driver tidak mendukung pemberitahuan asinkron Jika memanggil SQLSetStmtAttr untuk mengatur SQL_ATTR_ASYNC_STMT_EVENT; pemberitahuan asinkron tidak didukung oleh driver.

Komentar

Atribut pernyataan untuk pernyataan tetap berlaku sampai diubah oleh panggilan lain ke SQLSetStmtAttr atau sampai pernyataan dihilangkan dengan memanggil SQLFreeHandle. Memanggil SQLFreeStmt dengan opsi SQL_CLOSE, SQL_UNBIND, atau SQL_RESET_PARAMS tidak mengatur ulang atribut pernyataan.

Beberapa atribut pernyataan mendukung penggantian nilai serupa jika sumber data tidak mendukung nilai yang ditentukan dalam ValuePtr. Dalam kasus seperti itu, driver mengembalikan SQL_SUCCESS_WITH_INFO dan SQLSTATE 01S02 (Nilai opsi berubah). Misalnya, jika Atribut SQL_ATTR_CONCURRENCY dan ValuePtr SQL_CONCUR_ROWVER, dan jika sumber data tidak mendukung ini, driver menggantikan SQL_CONCUR_VALUES dan mengembalikan SQL_SUCCESS_WITH_INFO. Untuk menentukan nilai pengganti, aplikasi memanggil SQLGetStmtAttr.

Format informasi yang ditetapkan dengan ValuePtr tergantung pada Atribut yang ditentukan. SQLSetStmtAttr menerima informasi atribut dalam salah satu dari dua format berbeda: string karakter atau nilai bilangan bulat. Format masing-masing dicatat dalam deskripsi atribut. Format ini berlaku untuk informasi yang dikembalikan untuk setiap atribut di SQLGetStmtAttr. String karakter yang ditujukkan oleh argumen ValuePtr dari SQLSetStmtAttr memiliki panjang StringLength.

Catatan

Kemampuan untuk mengatur atribut pernyataan di tingkat koneksi dengan memanggil SQLSetConnectAttr telah tidak digunakan lagi di ODBC 3.x. Aplikasi ODBC 3.x tidak boleh mengatur atribut pernyataan di tingkat koneksi. Atribut pernyataan ODBC 3.x tidak dapat diatur pada tingkat koneksi, dengan pengecualian atribut SQL_ATTR_METADATA_ID dan SQL_ATTR_ASYNC_ENABLE, yang merupakan atribut koneksi dan atribut pernyataan, dan dapat diatur pada tingkat koneksi atau tingkat pernyataan.

Catatan

Driver ODBC 3.x hanya perlu mendukung fungsionalitas ini jika harus bekerja dengan aplikasi ODBC 2.x yang mengatur opsi pernyataan ODBC 2.x di tingkat koneksi. Untuk informasi selengkapnya, lihat "Mengatur Opsi Pernyataan pada Tingkat Koneksi" di bawah Pemetaan SQLSetConnectOption di Lampiran G: Panduan Driver untuk Kompatibilitas Mundur.

Atribut Pernyataan yang Mengatur Bidang Deskriptor

Banyak atribut pernyataan yang sesuai dengan bidang header deskriptor. Mengatur atribut ini sebenarnya menghasilkan pengaturan bidang deskriptor. Mengatur bidang dengan panggilan ke SQLSetStmtAttr daripada ke SQLSetDescField memiliki keuntungan bahwa handel deskriptor tidak harus diperoleh untuk panggilan fungsi.

Perhatian

Memanggil SQLSetStmtAttr untuk satu pernyataan dapat memengaruhi pernyataan lain. Ini terjadi ketika APD atau ARD yang terkait dengan pernyataan dialokasikan secara eksplisit dan juga terkait dengan pernyataan lain. Karena SQLSetStmtAttr memodifikasi APD atau ARD, modifikasi berlaku untuk semua pernyataan yang terkait dengan deskriptor ini. Jika ini bukan perilaku yang diperlukan, aplikasi harus memisahkan deskriptor ini dari pernyataan lain (dengan memanggil SQLSetStmtAttr untuk mengatur bidang SQL_ATTR_APP_ROW_DESC atau SQL_ATTR_APP_PARAM_DESC ke handel deskriptor yang berbeda) sebelum memanggil SQLSetStmtAttr lagi.

Ketika bidang deskriptor diatur sebagai hasil dari atribut pernyataan yang sesuai yang ditetapkan, bidang diatur hanya untuk deskriptor yang berlaku yang saat ini terkait dengan pernyataan yang diidentifikasi oleh argumen StatementHandle , dan pengaturan atribut tidak memengaruhi deskriptor apa pun yang mungkin terkait dengan pernyataan tersebut di masa mendatang. Saat bidang deskriptor yang juga merupakan atribut pernyataan diatur oleh panggilan ke SQLSetDescField, atribut pernyataan yang sesuai diatur. Jika deskriptor yang dialokasikan secara eksplisit disosiasikan dari pernyataan, atribut pernyataan yang sesuai dengan bidang header akan kembali ke nilai bidang dalam deskriptor yang dialokasikan secara implisit.

Ketika pernyataan dialokasikan (lihat SQLAllocHandle), empat handel deskriptor secara otomatis dialokasikan dan terkait dengan pernyataan. Handel deskriptor yang dialokasikan secara eksplisit dapat dikaitkan dengan pernyataan dengan memanggil SQLAllocHandle dengan fHandleType dari SQL_HANDLE_DESC untuk mengalokasikan handel deskriptor lalu memanggil SQLSetStmtAttr untuk mengaitkan handel deskriptor dengan pernyataan.

Atribut pernyataan dalam tabel berikut sesuai dengan bidang header deskriptor.

Atribut pernyataan Bidang header Desc.
SQL_ATTR_PARAM_BIND_OFFSET_PTR SQL_DESC_BIND_OFFSET_PTR APD
SQL_ATTR_PARAM_BIND_TYPE SQL_DESC_BIND_TYPE APD
SQL_ATTR_PARAM_OPERATION_PTR SQL_DESC_ARRAY_STATUS_PTR APD
SQL_ATTR_PARAM_STATUS_PTR SQL_DESC_ARRAY_STATUS_PTR IPD
SQL_ATTR_PARAMS_PROCESSED_PTR SQL_DESC_ROWS_PROCESSED_PTR IPD
SQL_ATTR_PARAMSET_SIZE SQL_DESC_ARRAY_SIZE APD
SQL_ATTR_ROW_ARRAY_SIZE SQL_DESC_ARRAY_SIZE ARD
SQL_ATTR_ROW_BIND_OFFSET_PTR SQL_DESC_BIND_OFFSET_PTR ARD
SQL_ATTR_ROW_BIND_TYPE SQL_DESC_BIND_TYPE ARD
SQL_ATTR_ROW_OPERATION_PTR SQL_DESC_ARRAY_STATUS_PTR ARD
SQL_ATTR_ROW_STATUS_PTR SQL_DESC_ARRAY_STATUS_PTR IRD
SQL_ATTR_ROWS_FETCHED_PTR SQL_DESC_ROWS_PROCESSED_PTR IRD

Atribut Pernyataan

Atribut yang saat ini ditentukan dan versi ODBC tempat mereka diperkenalkan ditampilkan dalam tabel berikut; diharapkan lebih banyak atribut akan didefinisikan oleh driver untuk memanfaatkan sumber data yang berbeda. Berbagai atribut dicadangkan oleh ODBC; pengembang driver harus memesan nilai untuk penggunaan khusus driver mereka sendiri dari Grup Terbuka. Untuk informasi selengkapnya, lihat Jenis Data Khusus Driver, Jenis Deskriptor, Jenis Informasi, Jenis Diagnostik, dan Atribut.

Atribut Konten ValuePtr
SQL_ATTR_APP_PARAM_DESC (ODBC 3.0) Handel ke APD untuk panggilan berikutnya ke SQLExecute dan SQLExecDirect pada handel pernyataan. Nilai awal atribut ini adalah deskriptor yang dialokasikan secara implisit ketika pernyataan awalnya dialokasikan. Jika nilai atribut ini diatur ke SQL_NULL_DESC atau handel yang awalnya dialokasikan untuk deskriptor, handel APD yang dialokasikan secara eksplisit yang sebelumnya terkait dengan handel pernyataan dipisahkan darinya dan handel pernyataan kembali ke handel APD yang dialokasikan secara implisit.

Atribut ini tidak dapat diatur ke handel deskriptor yang dialokasikan secara implisit untuk pernyataan lain atau ke handel deskriptor lain yang secara implisit diatur pada pernyataan yang sama; handel deskriptor yang dialokasikan secara implisit tidak dapat dikaitkan dengan lebih dari satu pegangan pernyataan atau deskriptor.
SQL_ATTR_APP_ROW_DESC (ODBC 3.0) Handel ke ARD untuk pengambilan berikutnya pada handel pernyataan. Nilai awal atribut ini adalah deskriptor yang dialokasikan secara implisit ketika pernyataan awalnya dialokasikan. Jika nilai atribut ini diatur ke SQL_NULL_DESC atau handel yang awalnya dialokasikan untuk deskriptor, handel ARD yang dialokasikan secara eksplisit yang sebelumnya terkait dengan handel pernyataan dipisahkan darinya dan handel pernyataan kembali ke handel ARD yang dialokasikan secara implisit.

Atribut ini tidak dapat diatur ke handel deskriptor yang dialokasikan secara implisit untuk pernyataan lain atau ke handel deskriptor lain yang secara implisit diatur pada pernyataan yang sama; handel deskriptor yang dialokasikan secara implisit tidak dapat dikaitkan dengan lebih dari satu pegangan pernyataan atau deskriptor.
SQL_ATTR_ASYNC_ENABLE (ODBC 1.0) Nilai SQLULEN yang menentukan apakah fungsi yang disebut dengan pernyataan yang ditentukan dijalankan secara asinkron:

SQL_ASYNC_ENABLE_OFF = Nonaktifkan dukungan eksekusi asinkron tingkat pernyataan (default).

SQL_ASYNC_ENABLE_ON = Aktifkan dukungan eksekusi asinkron tingkat pernyataan.

Untuk informasi selengkapnya, lihat Eksekusi Asinkron (Metode Polling).

Untuk driver dengan dukungan eksekusi asinkron tingkat pernyataan, atribut pernyataan SQL_ATTR_ASYNC_ENABLE hanya dibaca. Nilainya sama dengan nilai atribut tingkat koneksi dengan nama yang sama pada saat handel pernyataan dialokasikan.

Memanggil SQLSetStmtAttr untuk mengatur SQL_ATTR_ASYNC_ENABLE saat infoType SQL_ASYNC_MODE mengembalikan SQL_AM_CONNECTION mengembalikan SQLSTATE HYC00 (Fitur opsional tidak diterapkan). Untuk informasi selengkapnya, lihat Fungsi SQLSetConnectAttr untuk informasi selengkapnya.
SQL_ATTR_ASYNC_STMT_EVENT (ODBC 3.8) Nilai SQLPOINTER yang merupakan handel peristiwa.

Pemberitahuan penyelesaian fungsi asinkron diaktifkan dengan memanggil SQLSetStmtAttr untuk mengatur atribut SQL_ATTR_ASYNC_STMT_EVENT dan menentukan handel peristiwa.
SQL_ATTR_ASYNC_STMT_PCALLBACK (ODBC 3.8) SQLPOINTER ke fungsi panggilan balik asinkron.

Hanya Driver Manager yang dapat memanggil fungsi SQLSetStmtAttr driver dengan atribut ini.
SQL_ATTR_ASYNC_STMT_PCONTEXT (ODBC 3.8) SQLPOINTER ke struktur konteks

Hanya Driver Manager yang dapat memanggil fungsi SQLSetStmtAttr driver dengan atribut ini.
SQL_ATTR_CONCURRENCY (ODBC 2.0) Nilai SQLULEN yang menentukan konkurensi kursor:

SQL_CONCUR_READ_ONLY = Kursor bersifat baca-saja. Tidak ada pembaruan yang diizinkan.

SQL_CONCUR_LOCK = Kursor menggunakan tingkat penguncian terendah yang cukup untuk memastikan bahwa baris dapat diperbarui.

SQL_CONCUR_ROWVER = Kursor menggunakan kontrol konkurensi optimis, membandingkan versi baris seperti SQLBase ROWID atau Sybase TIMESTAMP.

SQL_CONCUR_VALUES = Kursor menggunakan kontrol konkurensi optimis, membandingkan nilai.

Nilai default untuk SQL_ATTR_CONCURRENCY adalah SQL_CONCUR_READ_ONLY.

Atribut ini tidak dapat ditentukan untuk kursor terbuka. Untuk informasi selengkapnya, lihat Jenis Konkurensi.

Jika Atribut SQL_ATTR_CURSOR_TYPE diubah ke jenis yang tidak mendukung nilai SQL_ATTR_CONCURRENCY saat ini, nilai SQL_ATTR_CONCURRENCY akan diubah pada waktu eksekusi, dan peringatan yang dikeluarkan saat SQLExecDirect atau SQLPrepare dipanggil.

Jika driver mendukung pernyataan SELECT FOR UPDATE dan pernyataan seperti itu dijalankan saat nilai SQL_ATTR_CONCURRENCY diatur ke SQL_CONCUR_READ_ONLY, kesalahan akan dikembalikan. Jika nilai SQL_ATTR_CONCURRENCY diubah menjadi nilai yang didukung driver untuk beberapa nilai SQL_ATTR_CURSOR_TYPE tetapi tidak untuk nilai SQL_ATTR_CURSOR_TYPE saat ini, nilai SQL_ATTR_CURSOR_TYPE akan diubah pada waktu eksekusi dan SQLSTATE 01S02 (Nilai opsi diubah) dikeluarkan ketika SQLExecDirect atau SQLPrepare dipanggil.

Jika konkurensi yang ditentukan tidak didukung oleh sumber data, driver menggantikan konkurensi yang berbeda dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah). Untuk SQL_CONCUR_VALUES, driver menggantikan SQL_CONCUR_ROWVER, dan sebaliknya. Untuk SQL_CONCUR_LOCK, driver menggantikan, secara berurutan, SQL_CONCUR_ROWVER atau SQL_CONCUR_VALUES. Validitas nilai yang diganti tidak diperiksa hingga waktu eksekusi.

Untuk informasi selengkapnya tentang hubungan antara SQL_ATTR_CONCURRENCY dan atribut kursor lainnya, lihat Karakteristik Kursor dan Jenis Kursor.
SQL_ATTR_CURSOR_SCROLLABLE (ODBC 3.0) Nilai SQLULEN yang menentukan tingkat dukungan yang diperlukan aplikasi. Pengaturan atribut ini memengaruhi panggilan berikutnya ke SQLExecDirect dan SQLExecute.

SQL_NONSCROLLABLE = Kursor yang dapat digulir tidak diperlukan pada handel pernyataan. Jika aplikasi memanggil SQLFetchScroll pada handel ini, satu-satunya nilai FetchOrientation yang valid adalah SQL_FETCH_NEXT. Ini adalah default.

SQL_SCROLLABLE = Kursor yang dapat digulir diperlukan pada handel pernyataan. Saat memanggil SQLFetchScroll, aplikasi dapat menentukan nilai FetchOrientation yang valid, mencapai posisi kursor dalam mode selain mode berurutan.

Untuk informasi selengkapnya tentang kursor yang dapat digulir, lihat Kursor yang Dapat Digulir. Untuk informasi selengkapnya tentang hubungan antara SQL_ATTR_CURSOR_SCROLLABLE dan atribut kursor lainnya, lihat Karakteristik Kursor dan Tipe Kursor
SQL_ATTR_CURSOR_SENSITIVITY (ODBC 3.0) Nilai SQLULEN yang menentukan apakah kursor pada handel pernyataan membuat perubahan yang terlihat pada hasil yang ditetapkan oleh kursor lain. Pengaturan atribut ini memengaruhi panggilan berikutnya ke SQLExecDirect dan SQLExecute. Aplikasi dapat membaca kembali nilai atribut ini untuk mendapatkan status awal atau statusnya seperti yang terakhir ditetapkan oleh aplikasi.

SQL_UNSPECIFIED = Ini tidak ditentukan apa jenis kursor dan apakah kursor pada handel pernyataan membuat terlihat perubahan yang dibuat pada hasil yang ditetapkan oleh kursor lain. Kursor pada handel pernyataan dapat membuat tidak ada yang terlihat, beberapa, atau semua perubahan tersebut. Ini adalah default.

SQL_INSENSITIVE = Semua kursor pada handel pernyataan menunjukkan tataan hasil tanpa mencerminkan perubahan apa pun yang dilakukan oleh kursor lain. Kursor yang tidak sensitif bersifat baca-saja. Ini sesuai dengan kursor statis, yang memiliki konkurensi yang bersifat baca-saja.

SQL_SENSITIVE = Semua kursor pada handel pernyataan membuat semua perubahan terlihat yang dibuat pada hasil yang ditetapkan oleh kursor lain.

Untuk informasi selengkapnya tentang hubungan antara SQL_ATTR_CURSOR_SENSITIVITY dan atribut kursor lainnya, lihat Karakteristik Kursor dan Jenis Kursor.
SQL_ATTR_CURSOR_TYPE (ODBC 2.0) Nilai SQLULEN yang menentukan jenis kursor:

SQL_CURSOR_FORWARD_ONLY = Kursor hanya menggulir ke depan.

SQL_CURSOR_STATIC = Data dalam kumpulan hasil bersifat statis.

SQL_CURSOR_KEYSET_DRIVEN = Driver menyimpan dan menggunakan kunci untuk jumlah baris yang ditentukan dalam atribut pernyataan SQL_ATTR_KEYSET_SIZE.

SQL_CURSOR_DYNAMIC = Driver hanya menyimpan dan menggunakan kunci untuk baris dalam set baris.

Nilai defaultnya adalah SQL_CURSOR_FORWARD_ONLY. Atribut ini tidak dapat ditentukan setelah pernyataan SQL disiapkan.

Jika jenis kursor yang ditentukan tidak didukung oleh sumber data, driver menggantikan jenis kursor yang berbeda dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah). Untuk kursor campuran atau dinamis, driver menggantikan, secara berurutan, kursor berbasis keyset atau statis. Untuk kursor berbasis keyset, driver menggantikan kursor statis.

Untuk informasi selengkapnya tentang jenis kursor yang dapat digulir, lihat Tipe Kursor yang Dapat Digulir. Untuk informasi selengkapnya tentang hubungan antara SQL_ATTR_CURSOR_TYPE dan atribut kursor lainnya, lihat Karakteristik Kursor dan Tipe Kursor.
SQL_ATTR_ENABLE_AUTO_IPD (ODBC 3.0) Nilai SQLULEN yang menentukan apakah populasi otomatis IPD dilakukan:

SQL_TRUE = Mengaktifkan populasi otomatis IPD setelah panggilan ke SQLPrepare. SQL_FALSE = Menonaktifkan populasi otomatis IPD setelah panggilan ke SQLPrepare. (Aplikasi masih dapat memperoleh informasi bidang IPD dengan memanggil SQLDescribeParam, jika didukung.) Nilai default atribut pernyataan SQL_ATTR_ENABLE_AUTO_IPD adalah SQL_FALSE. Untuk informasi selengkapnya, lihat Populasi Otomatis IPD.
SQL_ATTR_FETCH_BOOKMARK_PTR (ODBC 3.0) SQLLEN * yang menunjuk ke nilai bookmark biner. Ketika SQLFetchScroll dipanggil dengan fFetchOrientation sama dengan SQL_FETCH_BOOKMARK, driver mengambil nilai bookmark dari bidang ini. Bidang ini default ke penunjuk null. Untuk informasi selengkapnya, lihat Menggulir menurut Bookmark.

Nilai yang ditunjukkan oleh bidang ini tidak digunakan untuk menghapus berdasarkan marka buku, memperbarui berdasarkan marka buku, atau mengambil berdasarkan operasi marka buku di SQLBulkOperations, yang menggunakan marka buku yang di-cache dalam buffer set baris.
SQL_ATTR_IMP_PARAM_DESC (ODBC 3.0) Handel ke IPD. Nilai atribut ini adalah deskriptor yang dialokasikan ketika pernyataan awalnya dialokasikan. Aplikasi tidak dapat mengatur atribut ini.

Atribut ini dapat diambil dengan panggilan ke SQLGetStmtAttr tetapi tidak diatur oleh panggilan ke SQLSetStmtAttr.
SQL_ATTR_IMP_ROW_DESC (ODBC 3.0) Handel ke IRD. Nilai atribut ini adalah deskriptor yang dialokasikan ketika pernyataan awalnya dialokasikan. Aplikasi tidak dapat mengatur atribut ini.

Atribut ini dapat diambil dengan panggilan ke SQLGetStmtAttr tetapi tidak diatur oleh panggilan ke SQLSetStmtAttr.
SQL_ATTR_KEYSET_SIZE (ODBC 2.0) SQLULEN yang menentukan jumlah baris dalam set kunci untuk kursor berbasis keyset. Jika ukuran set kunci adalah 0 (default), kursor sepenuhnya digerakkan oleh keyset. Jika ukuran set kunci lebih besar dari 0, kursor dicampur (digerakkan oleh keyset dalam set kunci dan dinamis di luar set kunci). Ukuran set kunci default adalah 0. Untuk informasi selengkapnya tentang kursor berbasis keyset, lihat Kursor Berbasis Keyset.

Jika ukuran yang ditentukan melebihi ukuran set kunci maksimum, driver mengganti ukuran tersebut dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah).

SQLFetch atau SQLFetchScroll mengembalikan kesalahan jika ukuran keyset lebih besar dari 0 dan kurang dari ukuran set baris.
SQL_ATTR_MAX_LENGTH (ODBC 1.0) Nilai SQLULEN yang menentukan jumlah maksimum data yang dikembalikan driver dari karakter atau kolom biner. Jika ValuePtr kurang dari panjang data yang tersedia, SQLFetch atau SQLGetData memotong data dan mengembalikan SQL_SUCCESS. Jika ValuePtr adalah 0 (default), driver mencoba mengembalikan semua data yang tersedia.

Jika panjang yang ditentukan kurang dari jumlah minimum data yang dapat dikembalikan atau lebih besar dari jumlah data maksimum yang dapat dikembalikan sumber data, driver menggantikan nilai tersebut dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah).

Nilai atribut ini dapat diatur pada kursor terbuka; namun, pengaturan mungkin tidak segera berlaku, dalam hal ini driver akan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah) dan mengatur ulang atribut ke nilai aslinya.

Atribut ini dimaksudkan untuk mengurangi lalu lintas jaringan dan harus didukung hanya ketika sumber data (dibandingkan dengan driver) dalam driver beberapa tingkat dapat mengimplementasikannya. Mekanisme ini tidak boleh digunakan oleh aplikasi untuk memotong data; untuk memotong data yang diterima, aplikasi harus menentukan panjang buffer maksimum dalam argumen BufferLength di SQLBindCol atau SQLGetData.
SQL_ATTR_MAX_ROWS (ODBC 1.0) Nilai SQLULEN yang sesuai dengan jumlah baris maksimum untuk kembali ke aplikasi untuk pernyataan SELECT . Jika *ValuePtr sama dengan 0 (default), driver mengembalikan semua baris.

Atribut ini dimaksudkan untuk mengurangi lalu lintas jaringan. Secara konseptual, ini diterapkan ketika kumpulan hasil dibuat dan membatasi hasil yang diatur ke baris ValuePtr pertama. Jika jumlah baris dalam tataan hasil lebih besar dari ValuePtr, kumpulan hasil akan dipotong.

SQL_ATTR_MAX_ROWS berlaku untuk semua tataan hasil pada Pernyataan, termasuk yang dikembalikan oleh fungsi katalog. SQL_ATTR_MAX_ROWS menetapkan maksimum untuk nilai jumlah baris kursor.

Driver tidak boleh meniru perilaku SQL_ATTR_MAX_ROWS untuk SQLFetch atau SQLFetchScroll (jika batasan ukuran kumpulan hasil tidak dapat diimplementasikan pada sumber data) jika tidak dapat menjamin bahwa SQL_ATTR_MAX_ROWS akan diterapkan dengan benar.

Ini ditentukan driver apakah SQL_ATTR_MAX_ROWS berlaku untuk pernyataan selain pernyataan SELECT (seperti fungsi katalog).

Nilai atribut ini dapat diatur pada kursor terbuka; namun, pengaturan mungkin tidak segera berlaku, dalam hal ini driver akan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah) dan mengatur ulang atribut ke nilai aslinya.
SQL_ATTR_METADATA_ID (ODBC 3.0) Nilai SQLULEN yang menentukan bagaimana argumen string fungsi katalog diperlakukan.

Jika SQL_TRUE, argumen string fungsi katalog diperlakukan sebagai pengidentifikasi. Kasus ini tidak signifikan. Untuk string yang tidak dibatasi, driver menghapus spasi berikutnya dan string dilipat ke huruf besar. Untuk string yang dibatasi, driver menghapus spasi di depan atau belakang dan mengambil apa pun di antara pemisah secara harfiah. Jika salah satu argumen ini diatur ke penunjuk null, fungsi mengembalikan SQL_ERROR dan SQLSTATE HY009 (Penggunaan pointer null tidak valid).

Jika SQL_FALSE, argumen string fungsi katalog tidak diperlakukan sebagai pengidentifikasi. Kasus ini signifikan. Mereka dapat berisi pola pencarian string atau tidak, tergantung pada argumen.

Nilai defaultnya adalah SQL_FALSE.

Argumen TableType dari SQLTables, yang mengambil daftar nilai, tidak dipengaruhi oleh atribut ini.

SQL_ATTR_METADATA_ID juga dapat diatur pada tingkat koneksi. (Ini dan SQL_ATTR_ASYNC_ENABLE adalah satu-satunya atribut pernyataan yang juga merupakan atribut koneksi.)

Untuk informasi selengkapnya, lihat Argumen di Fungsi Katalog.
SQL_ATTR_NOSCAN (ODBC 1.0) Nilai SQLULEN yang menunjukkan apakah driver harus memindai string SQL untuk urutan escape:

SQL_NOSCAN_OFF = Driver memindai string SQL untuk urutan escape (default).

SQL_NOSCAN_ON = Driver tidak memindai string SQL untuk urutan escape. Sebagai gantinya, driver mengirimkan pernyataan langsung ke sumber data.

Untuk informasi selengkapnya, lihat Urutan Escape di ODBC.
SQL_ATTR_PARAM_BIND_OFFSET_PTR (ODBC 3.0) Nilai SQLULEN * yang menunjuk ke offset yang ditambahkan ke penunjuk untuk mengubah pengikatan parameter dinamis. Jika bidang ini non-null, driver mendereferensikan penunjuk, menambahkan nilai dereferensi ke setiap bidang yang ditangguhkan dalam rekaman deskriptor (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, dan SQL_DESC_OCTET_LENGTH_PTR), dan menggunakan nilai pointer baru saat mengikat. Ini diatur ke null secara default.

Offset ikatan selalu ditambahkan langsung ke bidang SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, dan SQL_DESC_OCTET_LENGTH_PTR. Jika offset diubah ke nilai yang berbeda, nilai baru masih ditambahkan langsung ke nilai di bidang deskriptor. Offset baru tidak ditambahkan ke nilai bidang ditambah offset sebelumnya.

Untuk informasi selengkapnya, lihat Offset Pengikatan Parameter.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_BIND_OFFSET_PTR di header APD.
SQL_ATTR_PARAM_BIND_TYPE (ODBC 3.0) Nilai SQLULEN yang menunjukkan orientasi pengikatan yang akan digunakan untuk parameter dinamis.

Bidang ini diatur ke SQL_PARAM_BIND_BY_COLUMN (default) untuk memilih pengikatan kolom bijaksana.

Untuk memilih pengikatan baris yang bijaksana, bidang ini diatur ke panjang struktur atau instans buffer yang akan terikat ke sekumpulan parameter dinamis. Panjang ini harus mencakup ruang untuk semua parameter terikat dan padding struktur atau buffer apa pun untuk memastikan bahwa ketika alamat parameter terikat bertahap dengan panjang yang ditentukan, hasilnya akan menunjuk ke awal parameter yang sama di set parameter berikutnya. Saat menggunakan operator sizeof di ANSI C, perilaku ini dijamin.

Untuk informasi selengkapnya, lihat Mengikat Array Parameter.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ BIND_TYPE di header APD.
SQL_ATTR_PARAM_OPERATION_PTR (ODBC 3.0) Nilai SQLUSMALLINT * yang menunjuk ke array nilai SQLUSMALLINT yang digunakan untuk mengabaikan parameter selama eksekusi pernyataan SQL. Setiap nilai diatur ke SQL_PARAM_PROCEED (agar parameter dijalankan) atau SQL_PARAM_IGNORE (agar parameter diabaikan).

Sekumpulan parameter dapat diabaikan selama pemrosesan dengan mengatur nilai status dalam array yang ditunjukkan oleh SQL_DESC_ARRAY_STATUS_PTR di APD ke SQL_PARAM_IGNORE. Sekumpulan parameter diproses jika nilai statusnya diatur ke SQL_PARAM_PROCEED atau jika tidak ada elemen dalam array yang diatur.

Atribut pernyataan ini dapat diatur ke pointer null, dalam hal ini driver tidak mengembalikan nilai status parameter. Atribut ini dapat diatur kapan saja, tetapi nilai baru tidak digunakan sampai waktu berikutnya SQLExecDirect atau SQLExecute dipanggil.

Atribut ini diabaikan ketika tidak ada parameter terikat.

Untuk informasi selengkapnya, lihat Menggunakan Array Parameter.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ARRAY_STATUS_PTR di header APD.
SQL_ATTR_PARAM_STATUS_PTR (ODBC 3.0) Nilai SQLUSMALLINT * yang menunjuk ke array nilai SQLUSMALLINT yang berisi informasi status untuk setiap baris nilai parameter setelah panggilan ke SQLExecute atau SQLExecDirect. Bidang ini diperlukan hanya jika PARAMSET_SIZE lebih besar dari 1.

Nilai status dapat berisi nilai berikut:

SQL_PARAM_SUCCESS: Pernyataan SQL berhasil dijalankan untuk serangkaian parameter ini.

SQL_PARAM_SUCCESS_WITH_INFO: Pernyataan SQL berhasil dijalankan untuk serangkaian parameter ini; namun, informasi peringatan tersedia dalam struktur data diagnostik.

SQL_PARAM_ERROR: Ada kesalahan dalam memproses set parameter ini. Informasi kesalahan tambahan tersedia dalam struktur data diagnostik.

SQL_PARAM_UNUSED: Set parameter ini tidak digunakan, mungkin karena fakta bahwa beberapa set parameter sebelumnya menyebabkan kesalahan yang membatalkan pemrosesan lebih lanjut, atau karena SQL_PARAM_IGNORE diatur untuk kumpulan parameter tersebut dalam array yang ditentukan oleh SQL_ATTR_PARAM_OPERATION_PTR.

SQL_PARAM_DIAG_UNAVAILABLE: Driver memperlakukan array parameter sebagai unit monolitik sehingga tidak menghasilkan tingkat informasi kesalahan ini.

Atribut pernyataan ini dapat diatur ke pointer null, dalam hal ini driver tidak mengembalikan nilai status parameter. Atribut ini dapat diatur kapan saja, tetapi nilai baru tidak digunakan sampai waktu berikutnya SQLExecute atau SQLExecDirect dipanggil. Perhatikan bahwa pengaturan atribut ini dapat memengaruhi perilaku parameter output yang diterapkan oleh driver.

Untuk informasi selengkapnya, lihat Menggunakan Array Parameter.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ARRAY_STATUS_PTR di header IPD.
SQL_ATTR_PARAMS_PROCESSED_PTR (ODBC 3.0) Bidang catatan SQLULEN * yang menunjuk ke buffer untuk mengembalikan jumlah set parameter yang telah diproses, termasuk set kesalahan. Tidak ada angka yang akan dikembalikan jika ini adalah penunjuk null.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ROWS_PROCESSED_PTR di header IPD.

Jika panggilan ke SQLExecDirect atau SQLExecute yang mengisi buffer yang ditujukkan oleh atribut ini tidak mengembalikan SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO, konten buffer tidak ditentukan.

Untuk informasi selengkapnya, lihat Menggunakan Array Parameter.
SQL_ATTR_PARAMSET_SIZE (ODBC 3.0) Nilai SQLULEN yang menentukan jumlah nilai untuk setiap parameter. Jika SQL_ATTR_PARAMSET_SIZE lebih besar dari 1, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, dan SQL_DESC_OCTET_LENGTH_PTR titik APD ke array. Kardinalitas setiap array sama dengan nilai bidang ini.

Atribut ini diabaikan ketika tidak ada parameter terikat.

Untuk informasi selengkapnya, lihat Menggunakan Array Parameter.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ARRAY_SIZE di header APD.
SQL_ATTR_QUERY_TIMEOUT (ODBC 1.0) Nilai SQLULEN yang sesuai dengan jumlah detik untuk menunggu pernyataan SQL dijalankan sebelum kembali ke aplikasi. Jika ValuePtr sama dengan 0 (default), tidak ada batas waktu.

Jika batas waktu yang ditentukan melebihi batas waktu maksimum di sumber data atau lebih kecil dari batas waktu minimum, SQLSetStmtAttr menggantikan nilai tersebut dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah).

Perhatikan bahwa aplikasi tidak perlu memanggil SQLCloseCursor untuk menggunakan kembali pernyataan jika pernyataan SELECT kehabisan waktu.

Batas waktu kueri yang ditetapkan dalam atribut pernyataan ini valid dalam mode sinkron dan asinkron.
SQL_ATTR_RETRIEVE_DATA (ODBC 2.0) Nilai SQLULEN:

SQL_RD_ON = SQLFetchScroll dan, di ODBC 3.x, SQLFetch mengambil data setelah memposisikan kursor ke lokasi yang ditentukan. Ini adalah default.

SQL_RD_OFF = SQLFetchScroll dan, di ODBC 3.x, SQLFetch tidak mengambil data setelah memposisikan kursor.

Dengan mengatur SQL_RETRIEVE_DATA ke SQL_RD_OFF, aplikasi dapat memverifikasi bahwa baris ada atau mengambil marka buku untuk baris tanpa menimbulkan overhead pengambilan baris. Untuk informasi selengkapnya, lihat Menggulir dan Mengambil Baris.

Nilai atribut ini dapat diatur pada kursor terbuka; namun, pengaturan mungkin tidak segera berlaku, dalam hal ini driver akan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah) dan mengatur ulang atribut ke nilai aslinya.
SQL_ATTR_ROW_ARRAY_SIZE (ODBC 3.0) Nilai SQLULEN yang menentukan jumlah baris yang dikembalikan oleh setiap panggilan ke SQLFetch atau SQLFetchScroll. Ini juga merupakan jumlah baris dalam array bookmark yang digunakan dalam operasi bookmark massal di SQLBulkOperations. Nilai default adalah 1.

Jika ukuran himpunan baris yang ditentukan melebihi ukuran himpunan baris maksimum yang didukung oleh sumber data, driver menggantikan nilai tersebut dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah).

Untuk informasi selengkapnya, lihat Ukuran Set Baris.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ARRAY_SIZE di header ARD.
SQL_ATTR_ROW_BIND_OFFSET_PTR (ODBC 3.0) Nilai SQLULEN * yang menunjuk ke offset yang ditambahkan ke penunjuk untuk mengubah pengikatan data kolom. Jika bidang ini non-null, driver mendereferensikan penunjuk, menambahkan nilai dereferensi ke setiap bidang yang ditangguhkan dalam rekaman deskriptor (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, dan SQL_DESC_OCTET_LENGTH_PTR), dan menggunakan nilai pointer baru saat mengikat. Ini diatur ke null secara default.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_BIND_OFFSET_PTR di header ARD.
SQL_ATTR_ROW_BIND_TYPE (ODBC 1.0) Nilai SQLULEN yang mengatur orientasi pengikatan yang akan digunakan saat SQLFetch atau SQLFetchScroll dipanggil pada pernyataan terkait. Pengikatan kolom yang bijaksana dipilih dengan mengatur nilai ke SQL_BIND_BY_COLUMN. Pengikatan baris yang bijaksana dipilih dengan mengatur nilai ke panjang struktur atau instans buffer tempat kolom hasil akan terikat.

Jika panjang ditentukan, panjangnya harus menyertakan spasi untuk semua kolom terikat dan pengisi struktur atau buffer apa pun untuk memastikan bahwa ketika alamat kolom terikat bertahap dengan panjang yang ditentukan, hasilnya akan menunjuk ke awal kolom yang sama di baris berikutnya. Saat menggunakan operator sizeof dengan struktur atau serikat di ANSI C, perilaku ini dijamin.

Pengikatan kolom bijaksana adalah orientasi pengikatan default untuk SQLFetch dan SQLFetchScroll.

Untuk informasi selengkapnya, lihat Mengikat Kolom untuk Digunakan dengan Kursor Blok.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_BIND_TYPE di header ARD.
SQL_ATTR_ROW_NUMBER (ODBC 2.0) Nilai SQLULEN yang merupakan jumlah baris saat ini di seluruh tataan hasil. Jika jumlah baris saat ini tidak dapat ditentukan atau tidak ada baris saat ini, driver mengembalikan 0.

Atribut ini dapat diambil dengan panggilan ke SQLGetStmtAttr tetapi tidak diatur oleh panggilan ke SQLSetStmtAttr.
SQL_ATTR_ROW_OPERATION_PTR (ODBC 3.0) Nilai SQLUSMALLINT * yang menunjuk ke array nilai SQLUSMALLINT yang digunakan untuk mengabaikan baris selama operasi massal menggunakan SQLSetPos. Setiap nilai diatur ke SQL_ROW_PROCEED (agar baris disertakan dalam operasi massal) atau SQL_ROW_IGNORE (agar baris dikecualikan dari operasi massal). (Baris tidak dapat diabaikan dengan menggunakan array ini selama panggilan ke SQLBulkOperations.)

Atribut pernyataan ini dapat diatur ke pointer null, dalam hal ini driver tidak mengembalikan nilai status baris. Atribut ini dapat diatur kapan saja, tetapi nilai baru tidak digunakan sampai waktu berikutnya SQLSetPos dipanggil.

Untuk informasi selengkapnya, lihat Memperbarui Baris di Set Baris dengan SQLSetPos dan Menghapus Baris di Set Baris dengan SQLSetPos.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ARRAY_STATUS_PTR di ARD.
SQL_ATTR_ROW_STATUS_PTR (ODBC 3.0) Nilai SQLUSMALLINT * yang menunjuk ke array nilai SQLUSMALLINT yang berisi nilai status baris setelah panggilan ke SQLFetch atau SQLFetchScroll. Array memiliki elemen sebanyak ada baris dalam set baris.

Atribut pernyataan ini dapat diatur ke pointer null, dalam hal ini driver tidak mengembalikan nilai status baris. Atribut ini dapat diatur kapan saja, tetapi nilai baru tidak digunakan sampai waktu berikutnya SQLBulkOperations, SQLFetch, SQLFetchScroll, atau SQLSetPos dipanggil.

Untuk informasi selengkapnya, lihat Jumlah Baris yang Diambil dan Status.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ARRAY_STATUS_PTR di header IRD.

Atribut ini dipetakan oleh driver ODBC 2.x ke array rgbRowStatus dalam panggilan ke SQLExtendedFetch.
SQL_ATTR_ROWS_FETCHED_PTR (ODBC 3.0) Nilai SQLULEN * yang menunjuk ke buffer untuk mengembalikan jumlah baris yang diambil setelah panggilan ke SQLFetch atau SQLFetchScroll; jumlah baris yang terpengaruh oleh operasi massal yang dilakukan oleh panggilan ke SQLSetPos dengan argumen Operasi SQL_REFRESH; atau jumlah baris yang terpengaruh oleh operasi massal yang dilakukan oleh SQLBulkOperations. Angka ini mencakup baris kesalahan.

Untuk informasi selengkapnya, lihat Jumlah Baris yang Diambil dan Status.

Mengatur atribut pernyataan ini mengatur bidang SQL_DESC_ROWS_PROCESSED_PTR di header IRD.

Jika panggilan ke SQLFetch atau SQLFetchScroll yang mengisi buffer yang ditunjukkan oleh atribut ini tidak mengembalikan SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO, konten buffer tidak ditentukan.
SQL_ATTR_SIMULATE_CURSOR (ODBC 2.0) Nilai SQLULEN yang menentukan apakah driver yang mensimulasikan pernyataan pembaruan dan penghapusan yang diposisikan menjamin bahwa pernyataan tersebut hanya memengaruhi satu baris tunggal.

Untuk mensimulasikan pernyataan pembaruan dan penghapusan yang diposisikan, sebagian besar driver membuat pernyataan UPDATE atau DELETE yang dicari yang berisi klausul WHERE yang menentukan nilai setiap kolom di baris saat ini. Kecuali kolom ini membentuk kunci unik, pernyataan tersebut dapat memengaruhi lebih dari satu baris.

Untuk menjamin bahwa pernyataan tersebut hanya memengaruhi satu baris, driver menentukan kolom dalam kunci unik dan menambahkan kolom ini ke kumpulan hasil. Jika aplikasi menjamin bahwa kolom dalam tataan hasil membentuk kunci unik, driver tidak diharuskan untuk melakukannya. Ini dapat mengurangi waktu eksekusi.

SQL_SC_NON_UNIQUE = Driver tidak menjamin bahwa pernyataan pembaruan atau penghapusan yang diposisikan yang disimulasikan hanya akan memengaruhi satu baris; itu adalah tanggung jawab aplikasi untuk melakukannya. Jika pernyataan memengaruhi lebih dari satu baris, SQLExecute, SQLExecDirect, atau SQLSetPos mengembalikan SQLSTATE 01001 (Konflik operasi kursor).

SQL_SC_TRY_UNIQUE = Driver mencoba menjamin bahwa pernyataan pembaruan atau penghapusan yang diposisikan yang disimulasikan hanya memengaruhi satu baris. Driver selalu menjalankan pernyataan tersebut, bahkan jika mungkin memengaruhi lebih dari satu baris, seperti ketika tidak ada kunci unik. Jika pernyataan memengaruhi lebih dari satu baris, SQLExecute, SQLExecDirect, atau SQLSetPos mengembalikan SQLSTATE 01001 (Konflik operasi kursor).

SQL_SC_UNIQUE = Driver menjamin bahwa simulasi pernyataan pembaruan atau penghapusan yang diposisikan hanya memengaruhi satu baris. Jika driver tidak dapat menjamin ini untuk pernyataan tertentu, SQLExecDirect atau SQLPrepare mengembalikan kesalahan.

Jika sumber data menyediakan dukungan SQL asli untuk pernyataan pembaruan dan penghapusan yang diposisikan dan driver tidak mensimulasikan kursor, SQL_SUCCESS dikembalikan saat SQL_SC_UNIQUE diminta untuk SQL_SIMULATE_CURSOR. SQL_SUCCESS_WITH_INFO dikembalikan jika SQL_SC_TRY_UNIQUE atau SQL_SC_NON_UNIQUE diminta. Jika sumber data menyediakan tingkat dukungan SQL_SC_TRY_UNIQUE dan driver tidak, SQL_SUCCESS dikembalikan untuk SQL_SC_TRY_UNIQUE dan SQL_SUCCESS_WITH_INFO dikembalikan untuk SQL_SC_NON_UNIQUE.

Jika jenis simulasi kursor yang ditentukan tidak didukung oleh sumber data, driver menggantikan jenis simulasi yang berbeda dan mengembalikan SQLSTATE 01S02 (Nilai opsi berubah). Untuk SQL_SC_UNIQUE, driver menggantikan, secara berurutan, SQL_SC_TRY_UNIQUE atau SQL_SC_NON_UNIQUE. Untuk SQL_SC_TRY_UNIQUE, driver menggantikan SQL_SC_NON_UNIQUE.

Defaultnya adalah SQL_SC_UNIQUE.

Untuk informasi selengkapnya, lihat Mensimulasikan Pernyataan Pembaruan dan Penghapusan yang Diposisikan.
SQL_ATTR_USE_BOOKMARKS (ODBC 2.0) Nilai SQLULEN yang menentukan apakah aplikasi akan menggunakan marka buku dengan kursor:

SQL_UB_OFF = Nonaktif (default)

SQL_UB_VARIABLE = Aplikasi akan menggunakan bookmark dengan kursor, dan driver akan menyediakan marka buku panjang variabel jika didukung. SQL_UB_FIXED tidak digunakan lagi di ODBC 3.x. Aplikasi ODBC 3.x harus selalu menggunakan bookmark panjang variabel, bahkan saat bekerja dengan driver ODBC 2.x (yang hanya mendukung bookmark 4-byte dan panjang tetap). Ini karena bookmark panjang tetap hanyalah kasus khusus dari bookmark panjang variabel. Saat bekerja dengan driver ODBC 2.x , Driver Manager memetakan SQL_UB_VARIABLE ke SQL_UB_FIXED.

Untuk menggunakan marka buku dengan kursor, aplikasi harus menentukan atribut ini dengan nilai SQL_UB_VARIABLE sebelum membuka kursor.

Untuk informasi selengkapnya, lihat Mengambil Bookmark.

[1] Fungsi-fungsi ini dapat dipanggil secara asinkron hanya jika deskriptor adalah deskriptor implementasi, bukan pendeskripsi aplikasi.

Lihat Pengikatan Kolom-Bijaksana dan Pengikatan Baris-Bijaksana.

Untuk informasi tentang Lihat
Membatalkan pemrosesan pernyataan Fungsi SQLCancel
Mengembalikan pengaturan atribut koneksi Fungsi SQLGetConnectAttr
Mengembalikan pengaturan atribut pernyataan Fungsi SQLGetStmtAttr
Mengatur atribut koneksi Fungsi SQLSetConnectAttr
Mengatur satu bidang deskriptor Fungsi SQLSetDescField

Lihat Juga

Referensi API ODBC
File Header ODBC