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.

Kembali

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, PERBARUInama tabel ...WHERE CURRENT OFcursor-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.

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

Lihat Juga

Referensi API ODBC
File Header ODBC