Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kesesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 3.0: ISO 92
Summary
SQLGetStmtAttr mengembalikan pengaturan saat ini dari atribut pernyataan.
Note
Untuk informasi lebih lanjut tentang apa yang dipetakan Driver Manager ke fungsi ini ketika ODBC 3. aplikasi x bekerja dengan ODBC 2. driver x , lihat Memetakan Fungsi Pengganti untuk Kompatibilitas Mundur Aplikasi.
Syntax
SQLRETURN SQLGetStmtAttr(
SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Arguments
StatementHandle
[Input] Handel pernyataan.
Atribut
[Input] Atribut untuk diambil.
ValuePtr
[Output] Penunjuk ke buffer untuk mengembalikan nilai atribut yang ditentukan dalam Atribut.
Jika ValuePtr bernilai NULL, StringLengthPtr tetap akan mengembalikan total jumlah byte (tidak termasuk karakter null-termination untuk data karakter) yang tersedia untuk dikembalikan di buffer yang ditunjuk 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 Attribute adalah atribut yang didefinisikan 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 Attribute adalah atribut yang didefinisikan oleh driver, aplikasi akan menunjukkan sifat atribut tersebut kepada Driver Manager dengan mengatur argumen BufferLength . BufferLength dapat memiliki nilai berikut:
Jika *ValuePtr adalah pointer ke string karakter, maka BufferLength adalah panjang string atau SQL_NTS tersebut.
Jika *ValuePtr adalah pointer ke buffer biner, maka aplikasi menempatkan hasil makro SQL_LEN_BINARY_ATTR(length) ke BufferLength. Ini menempatkan nilai negatif di BufferLength.
Jika *ValuePtr adalah penunjuk ke nilai selain string karakter atau string biner, maka BufferLength seharusnya memiliki nilai SQL_IS_POINTER.
Jika *ValuePtr berisi tipe data dengan panjang tetap, maka BufferLength adalah SQL_IS_INTEGER atau SQL_IS_UINTEGER, sesuai kebutuhan.
StringLengthPtr
[Output] Sebuah pointer ke buffer untuk mengembalikan total jumlah byte (tidak termasuk karakter null-terminasi) yang tersedia untuk dikembalikan dalam *ValuePtr. Jika nilai atribut adalah string karakter, dan jumlah byte yang tersedia untuk dikembalikan lebih besar atau sama dengan BufferLength, data dalam *ValuePtr dipotong menjadi BufferLength dikurangi panjang karakter null-terminasi dan dihentikan null-terminate oleh driver.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, atau SQL_INVALID_HANDLE.
Diagnostics
Ketika SQLGetStmtAttr mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO, nilai SQLSTATE yang terkait dapat diperoleh dengan memanggil SQLGetDiagRec dengan HandleType SQL_HANDLE_STMT dan HandleStatementHandle. Tabel berikut mencantumkan nilai SQLSTATE yang umum dikembalikan oleh SQLGetStmtAttr dan menjelaskan masing-masing dalam konteks fungsi ini; notasi "(DM)" mendahului deskripsi SQLSTATE 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 null-terminasi. Panjang nilai string yang tidak terpotong dikembalikan dalam *StringLengthPtr. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
| 24000 | Status kursor tidak valid | Argumen Attribute SQL_ATTR_ROW_NUMBER dan kursor tidak terbuka, atau kursor diposisikan sebelum awal hasil atau setelah akhir hasil tersebut. |
| 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 berjalan saat 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 argumen Attribute 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 argumen Attribute adalah atribut pernyataan ODBC yang valid untuk versi ODBC yang didukung oleh driver, tetapi tidak didukung oleh driver. |
| HYT01 | Waktu tunggu koneksi habis | 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.
Pemanggilan ke SQLGetStmtAttr mengembalikan dalam *ValuePtr nilai atribut pernyataan yang ditentukan dalam Attribute. Nilai tersebut bisa berupa nilai SQLULEN atau string karakter yang diakhiri null. Jika nilainya adalah SQLULEN, beberapa driver mungkin hanya menulis buffer 32-bit atau 16-bit yang lebih rendah dan membiarkan bit orde lebih tinggi tetap tidak berubah. Oleh karena itu, aplikasi harus menggunakan buffer SQLULEN dan menginisialisasi nilainya menjadi 0 sebelum memanggil fungsi ini. Selain itu, argumen BufferLength dan StringLengthPtr tidak digunakan. Jika nilainya adalah string yang diakhiri null, aplikasi menentukan panjang maksimum string tersebut dalam argumen BufferLength , dan driver mengembalikan panjang string tersebut dalam buffer *StringLengthPtr .
Untuk memungkinkan aplikasi yang memanggil SQLGetStmtAttr bekerja dengan ODBC 2. x driver, pemanggilan ke SQLGetStmtAttr dipetakan di Driver Manager ke SQLGetStmtOption.
Atribut pernyataan berikut hanya bisa dibaca, 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.
Fungsi Terkait
| Untuk informasi mengenai | Lihat |
|---|---|
| Mengembalikan pengaturan atribut koneksi | Fungsi SQLGetConnectAttr |
| Mengatur atribut koneksi | Fungsi SQLSetConnectAttr |
| Mengatur atribut pernyataan | Fungsi SQLSetStmtAttr |