Fungsi SQLGetStmtAttr

Kesesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 3.0: ISO 92

Ringkasan
SQLGetStmtAttr mengembalikan pengaturan atribut pernyataan saat ini.

Catatan

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

Sintaks

  
SQLRETURN SQLGetStmtAttr(  
     SQLHSTMT        StatementHandle,  
     SQLINTEGER      Attribute,  
     SQLPOINTER      ValuePtr,  
     SQLINTEGER      BufferLength,  
     SQLINTEGER *    StringLengthPtr);  

Argumen

StatementHandle
[Input] Handel pernyataan.

Atribut
[Input] Atribut yang akan diambil.

ValuePtr
[Output] Penunjuk ke buffer untuk mengembalikan nilai atribut yang ditentukan dalam Atribut.

Jika ValuePtr adalah NULL, StringLengthPtr masih akan mengembalikan jumlah total byte (tidak termasuk karakter penghentian null untuk data karakter) yang tersedia untuk dikembalikan dalam buffer yang ditujukkan oleh ValuePtr.

BufferLength
[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, BufferLength diabaikan. Jika nilai yang dikembalikan dalam *ValuePtr adalah string Unicode (saat memanggil SQLGetStmtAttrW), argumen BufferLength harus berupa angka genap.

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

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

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

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

  • Jika *ValuePtr berisi jenis data panjang tetap, maka BufferLength SQL_IS_INTEGER atau SQL_IS_UINTEGER, sebagaimana mewajibkan.

StringLengthPtr
[Output] Penunjuk ke buffer untuk mengembalikan jumlah total byte (tidak termasuk karakter penghentian null) yang tersedia untuk dikembalikan dalam *ValuePtr. Jika nilai atribut adalah string karakter, dan jumlah byte yang tersedia untuk dikembalikan lebih besar dari atau sama dengan BufferLength, data dalam *ValuePtr dipotong menjadi BufferLength dikurangi panjang karakter null-termination dan dihentikan null oleh driver.

Kembali

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, atau SQL_INVALID_HANDLE.

Diagnostik

Ketika SQLGetStmtAttr 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 SQLGetStmtAttr 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.)
01004 Data string, terpotong kanan Data yang dikembalikan dalam *ValuePtr dipotong menjadi BufferLength dikurangi panjang karakter penghentian null. Panjang nilai string yang tidak terpotong dikembalikan dalam *StringLengthPtr. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.)
24000 Status kursor tidak valid Atribut argumen SQL_ATTR_ROW_NUMBER dan kursor tidak terbuka, atau kursor diposisikan sebelum awal kumpulan hasil atau setelah akhir tataan hasil.
HY000 Kesalahan umum Terjadi kesalahan yang tidak ada SQLSTATE tertentu dan tidak ada SQLSTATE khusus implementasi yang ditentukan. Pesan kesalahan yang dikembalikan oleh SQLGetDiagRec dalam argumen MessageText menjelaskan kesalahan dan penyebabnya.
HY001 Kesalahan alokasi memori Driver tidak dapat mengalokasikan memori yang diperlukan untuk mendukung eksekusi atau penyelesaian fungsi.
HY010 Kesalahan urutan fungsi (DM) Fungsi eksekusi asinkron dipanggil untuk handel koneksi yang terkait dengan StatementHandle. Fungsi asinkron ini masih dijalankan ketika fungsi SQLGetStmtAttr dipanggil.

(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.
HY013 Kesalahan manajemen memori Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah.
HY090 String atau panjang buffer tidak valid (DM) *ValuePtr adalah string karakter, dan BufferLength kurang dari nol, tetapi tidak sama dengan SQL_NTS.
HY092 Pengidentifikasi atribut/opsi tidak valid Nilai yang ditentukan untuk atribut argumen tidak valid untuk versi ODBC yang didukung oleh driver.
HY109 Posisi kursor tidak valid Argumen Atribut SQL_ATTR_ROW_NUMBER dan baris telah dihapus atau tidak dapat diambil.
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.
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 sesuai dengan StatementHandle tidak mendukung fungsi.

Komentar

Untuk informasi umum tentang atribut pernyataan, lihat Atribut Pernyataan.

Panggilan ke SQLGetStmtAttr mengembalikan * ValuePtr nilai atribut pernyataan yang ditentukan dalam Atribut. Nilai tersebut dapat berupa nilai SQLULEN atau string karakter yang dihentikan null. Jika nilainya adalah nilai SQLULEN, beberapa driver hanya dapat menulis buffer 32-bit atau 16-bit yang lebih rendah dan membiarkan bit berurutan lebih tinggi tidak berubah. Oleh karena itu, aplikasi harus menggunakan buffer SQLULEN dan menginisialisasi nilai ke 0 sebelum memanggil fungsi ini. Selain itu , argumen BufferLength dan StringLengthPtr tidak digunakan. Jika nilai adalah string yang dihentikan null, aplikasi menentukan panjang maksimum string tersebut dalam argumen BufferLength , dan driver mengembalikan panjang string tersebut dalam buffer *StringLengthPtr .

Untuk memungkinkan aplikasi memanggil SQLGetStmtAttr untuk bekerja dengan ODBC 2.driver x , panggilan ke SQLGetStmtAttr dipetakan di Driver Manager ke SQLGetStmtOption.

Atribut pernyataan berikut bersifat baca-saja, sehingga dapat diambil oleh SQLGetStmtAttr, tetapi tidak diatur oleh SQLSetStmtAttr:

  • SQL_ATTR_IMP_PARAM_DESC

  • SQL_ATTR_IMP_ROW_DESC

  • SQL_ATTR_ROW_NUMBER

Untuk daftar atribut yang dapat diatur dan diambil, lihat SQLSetStmtAttr.

Untuk informasi tentang Lihat
Mengembalikan pengaturan atribut koneksi Fungsi SQLGetConnectAttr
Mengatur atribut koneksi Fungsi SQLSetConnectAttr
Mengatur atribut pernyataan Fungsi SQLSetStmtAttr

Lihat Juga

Referensi API ODBC
File Header ODBC