Fungsi SQLGetCursorName
Kesesuaian
Versi diperkenalkan: Kepatuhan Standar ODBC 1.0: ISO 92
Ringkasan
SQLGetCursorName mengembalikan nama kursor yang terkait dengan pernyataan tertentu.
Sintaks
SQLRETURN SQLGetCursorName(
SQLHSTMT StatementHandle,
SQLCHAR * CursorName,
SQLSMALLINT BufferLength,
SQLSMALLINT * NameLengthPtr);
Argumen
StatementHandle
[Input] Handel pernyataan.
CursorName
[Output] Arahkan ke buffer untuk mengembalikan nama kursor.
Jika CursorName adalah NULL, NameLengthPtr masih akan mengembalikan jumlah total karakter (tidak termasuk karakter penghentian null untuk data karakter) yang tersedia untuk dikembalikan dalam buffer yang ditujukkan oleh CursorName.
BufferLength
[Input] Panjang *CursorName, dalam karakter.
NameLengthPtr
[Output] Penunjuk ke memori untuk mengembalikan jumlah total karakter (tidak termasuk karakter penghentian null) yang tersedia untuk dikembalikan dalam *CursorName. Jika jumlah karakter yang tersedia untuk dikembalikan lebih besar dari atau sama dengan BufferLength, nama kursor di *CursorName dipotong menjadi BufferLength dikurangi panjang karakter penghentian null.
Mengembalikan
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, atau SQL_INVALID_HANDLE.
Diagnostik
Saat SQLGetCursorName 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 SQLGetCursorName 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 | Buffer *CursorName tidak cukup besar untuk mengembalikan seluruh nama kursor, sehingga nama kursor terpotong. Panjang nama kursor yang tidak terpotong dikembalikan dalam *NameLengthPtr. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
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. |
HY010 | Kesalahan urutan fungsi | (DM) Fungsi eksekusi asinkron dipanggil untuk handel koneksi yang terkait dengan StatementHandle. Fungsi asinkron ini masih dijalankan ketika fungsi SQLGetCursorName 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. |
HY013 | Kesalahan manajemen memori | Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah. |
HY015 | Tidak ada nama kursor yang tersedia | (DM) Driver adalah driver ODBC 2*.x*, tidak ada kursor terbuka pada pernyataan, dan tidak ada nama kursor yang ditetapkan dengan SQLSetCursorName. |
HY090 | String atau panjang buffer tidak valid | (DM) Nilai yang ditentukan dalam argumen BufferLength kurang dari 0. |
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. |
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. |
Komentar
Nama kursor hanya digunakan dalam pernyataan pembaruan dan penghapusan yang diposisikan (misalnya, PERBARUI nama tabel ...WHERE CURRENT OF cursor-name). Untuk informasi selengkapnya, lihat Pernyataan Pembaruan dan Penghapusan yang Diposisikan. Jika aplikasi tidak memanggil SQLSetCursorName untuk menentukan nama kursor, driver akan menghasilkan nama. Nama ini dimulai dengan huruf SQL_CUR.
Catatan
Di ODBC 2*.x*, ketika tidak ada kursor terbuka dan tidak ada nama yang telah diatur oleh panggilan ke SQLSetCursorName, panggilan ke SQLGetCursorName mengembalikan SQLSTATE HY015 (Tidak ada nama kursor yang tersedia). Dalam ODBC 3*.x*, ini tidak lagi benar; terlepas dari kapan SQLGetCursorName dipanggil, driver mengembalikan nama kursor.
SQLGetCursorName mengembalikan nama kursor apakah nama dibuat secara eksplisit atau implisit atau tidak. Nama kursor dibuat secara implisit jika SQLSetCursorName tidak dipanggil. SQLSetCursorName dapat dipanggil untuk mengganti nama kursor pada pernyataan selama kursor berada dalam status dialokasikan atau disiapkan.
Nama kursor yang diatur secara eksplisit atau implisit tetap diatur hingga StatementHandle yang terkait dengannya dihilangkan, menggunakan SQLFreeHandle dengan HandleType SQL_HANDLE_STMT.
Fungsi Terkait
Untuk informasi tentang | Lihat |
---|---|
Menjalankan pernyataan SQL | Fungsi SQLExecDirect |
Menjalankan pernyataan SQL yang disiapkan | Fungsi SQLExecute |
Menyiapkan pernyataan untuk eksekusi | Fungsi SQLPrepare |
Mengatur nama kursor | Fungsi SQLSetCursorName |