Bagikan melalui


Fungsi SQLGetDescRec

Kesesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 3.0: ISO 92

Ringkasan
SQLGetDescRec mengembalikan pengaturan atau nilai saat ini dari beberapa bidang rekaman deskriptor. Bidang yang dikembalikan menjelaskan nama, jenis data, dan penyimpanan data kolom atau parameter.

Sintaks

  
SQLRETURN SQLGetDescRec(  
      SQLHDESC        DescriptorHandle,  
      SQLSMALLINT     RecNumber,  
      SQLCHAR *       Name,  
      SQLSMALLINT     BufferLength,  
      SQLSMALLINT *   StringLengthPtr,  
      SQLSMALLINT *   TypePtr,  
      SQLSMALLINT *   SubTypePtr,  
      SQLLEN *        LengthPtr,  
      SQLSMALLINT *   PrecisionPtr,  
      SQLSMALLINT *   ScalePtr,  
      SQLSMALLINT *   NullablePtr);  

Argumen

DescriptorHandle
[Input] Handel deskriptor.

RecNumber
[Input] Menunjukkan catatan deskriptor tempat aplikasi mencari informasi. Rekaman deskriptor diberi nomor dari 1, dengan nomor rekaman 0 menjadi catatan marka buku. Argumen RecNumber harus kurang dari atau sama dengan nilai SQL_DESC_COUNT. Jika RecNumber kurang dari atau sama dengan SQL_DESC_COUNT tetapi baris tidak berisi data untuk kolom atau parameter, panggilan ke SQLGetDescRec akan mengembalikan nilai default bidang. (Untuk informasi selengkapnya, lihat "Inisialisasi Bidang Deskriptor" di SQLSetDescField.)

Nama
[Output] Penunjuk ke buffer untuk mengembalikan bidang SQL_DESC_NAME untuk catatan deskriptor.

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

BufferLength
[Input] Panjang *Buffer nama , dalam karakter.

StringLengthPtr
[Output] Penunjuk ke buffer untuk mengembalikan jumlah karakter data yang tersedia untuk dikembalikan dalam buffer *Nama , tidak termasuk karakter penghentian null. Jika jumlah karakter lebih besar dari atau sama dengan BufferLength, data dalam *Nama dipotong menjadi BufferLength dikurangi panjang karakter penghentian null, dan dihentikan null oleh driver.

TypePtr
[Output] Penunjuk ke buffer untuk mengembalikan nilai bidang SQL_DESC_TYPE untuk catatan deskriptor.

SubTypePtr
[Output] Untuk rekaman yang jenisnya SQL_DATETIME atau SQL_INTERVAL, ini adalah penunjuk ke buffer untuk mengembalikan nilai bidang SQL_DESC_DATETIME_INTERVAL_CODE.

LengthPtr
[Output] Penunjuk ke buffer untuk mengembalikan nilai bidang SQL_DESC_OCTET_LENGTH untuk rekaman deskriptor.

PresisiPtr
[Output] Penunjuk ke buffer untuk mengembalikan nilai bidang SQL_DESC_PRECISION untuk catatan deskriptor.

ScalePtr
[Output] Penunjuk ke buffer untuk mengembalikan nilai bidang SQL_DESC_SCALE untuk catatan deskriptor.

NullablePtr
[Output] Penunjuk ke buffer untuk mengembalikan nilai bidang SQL_DESC_NULLABLE untuk catatan deskriptor.

Kembali

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA, atau SQL_INVALID_HANDLE.

SQL_NO_DATA dikembalikan jika RecNumber lebih besar dari jumlah rekaman deskriptor saat ini.

SQL_NO_DATA dikembalikan jika DescriptorHandle adalah handel IRD dan pernyataan dalam status siap atau dijalankan tetapi tidak ada kursor terbuka yang terkait dengannya.

Diagnostik

Saat SQLGetDescRec mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO, nilai SQLSTATE terkait dapat diperoleh dengan memanggil SQLGetDiagRec dengan HandleType SQL_HANDLE_DESC dan Handle of DescriptorHandle. Tabel berikut mencantumkan nilai SQLSTATE yang biasanya dikembalikan oleh SQLGetDescRec 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 *Nama tidak cukup besar untuk mengembalikan seluruh bidang deskriptor. Oleh karena itu, bidang dipotong. Panjang bidang deskriptor yang tidak terpotong dikembalikan dalam *StringLengthPtr. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.)
07009 Indeks deskriptor tidak valid Argumen FieldIdentifier adalah bidang rekaman, argumen RecNumber diatur ke 0, dan argumen DescriptorHandle adalah handel IPD.

(DM) Argumen RecNumber diatur ke 0, dan atribut pernyataan SQL_ATTR_USE_BOOKMARKS diatur ke SQL_UB_OFF, dan argumen DescriptorHandle adalah handel IRD.

Argumen RecNumber kurang dari 0.
08S01 Kegagalan tautan komunikasi Tautan komunikasi antara driver dan sumber data tempat driver tersambung gagal sebelum fungsi selesai diproses.
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.
HY007 Pernyataan terkait tidak disiapkan DescriptorHandle dikaitkan dengan IRD, dan handel pernyataan terkait tidak dalam status disiapkan atau dijalankan.
HY010 Kesalahan urutan fungsi (DM) DescriptorHandle dikaitkan dengan StatementHandle tempat fungsi eksekusi asinkron (bukan yang ini) dipanggil dan masih dijalankan ketika fungsi ini dipanggil.

(DM) DescriptorHandle dikaitkan dengan StatementHandle tempat SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos dipanggil dan dikembalikan SQL_NEED_DATA. Fungsi ini dipanggil sebelum data dikirim untuk semua parameter atau kolom data-at-execution.

(DM) Fungsi eksekusi asinkron dipanggil untuk handel koneksi yang terkait dengan DescriptorHandle. Fungsi asinkron ini masih dijalankan ketika SQLGetDescRec dipanggil.
HY013 Kesalahan manajemen memori Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah.
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 DescriptorHandle tidak mendukung fungsi.

Komentar

Aplikasi dapat memanggil SQLGetDescRec untuk mengambil nilai bidang deskriptor berikut untuk satu kolom atau parameter:

  • SQL_DESC_NAME

  • SQL_DESC_TYPE

  • SQL_DESC_DATETIME_INTERVAL_CODE (untuk rekaman yang jenisnya SQL_DATETIME atau SQL_INTERVAL)

  • SQL_DESC_OCTET_LENGTH

  • SQL_DESC_PRECISION

  • SQL_DESC_SCALE

  • SQL_DESC_NULLABLE

SQLGetDescRec tidak mengambil nilai untuk bidang header.

Aplikasi dapat mencegah pengembalian pengaturan bidang dengan mengatur argumen yang sesuai dengan bidang ke penunjuk null.

Ketika aplikasi memanggil SQLGetDescRec untuk mengambil nilai bidang yang tidak ditentukan untuk jenis deskriptor tertentu, fungsi mengembalikan SQL_SUCCESS tetapi nilai yang dikembalikan untuk bidang tidak terdefinisi. Misalnya, memanggil SQLGetDescRec untuk bidang SQL_DESC_NAME atau SQL_DESC_NULLABLE APD atau ARD akan mengembalikan SQL_SUCCESS tetapi nilai yang tidak ditentukan untuk bidang tersebut.

Ketika aplikasi memanggil SQLGetDescRec untuk mengambil nilai bidang yang ditentukan untuk jenis deskriptor tertentu tetapi tidak memiliki nilai default dan belum ditetapkan, fungsi mengembalikan SQL_SUCCESS tetapi nilai yang dikembalikan untuk bidang tidak ditentukan. Untuk informasi selengkapnya, lihat "Inisialisasi Bidang Deskriptor" di SQLSetDescField.

Nilai bidang juga dapat diambil satu per satu dengan panggilan ke SQLGetDescField. Untuk deskripsi bidang di header atau rekaman deskriptor, lihat SQLSetDescField. Untuk informasi selengkapnya tentang deskriptor, lihat Deskriptor.

Untuk informasi tentang Lihat
Mengikat kolom Fungsi SQLBindCol
Mengikat parameter Fungsi SQLBindParameter
Mendapatkan bidang deskriptor Fungsi SQLGetDescField
Mengatur beberapa bidang deskriptor Fungsi SQLSetDescRec

Lihat Juga

Referensi API ODBC
File Header ODBC