Fungsi SQLSetDescField

Kesesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 3.0: ISO 92

Ringkasan
SQLSetDescField menetapkan nilai satu bidang catatan deskriptor.

Sintaks

SQLRETURN SQLSetDescField(  
     SQLHDESC      DescriptorHandle,  
     SQLSMALLINT   RecNumber,  
     SQLSMALLINT   FieldIdentifier,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    BufferLength);  

Argumen

DescriptorHandle
[Input] Handel deskriptor.

RecNumber
[Input] Menunjukkan catatan deskriptor yang berisi bidang yang ingin diatur aplikasi. Rekaman deskriptor diberi nomor dari 0, dengan nomor rekaman 0 menjadi catatan bookmark. Argumen RecNumber diabaikan untuk bidang header.

Pengidentifikasi Bidang
[Input] Menunjukkan bidang deskriptor yang nilainya akan diatur. Untuk informasi selengkapnya, lihat "Argumen FieldIdentifier " di bagian "Komentar".

ValuePtr
[Input] Penunjuk ke buffer yang berisi informasi deskriptor, atau nilai bilangan bulat. Jenis data tergantung pada nilai FieldIdentifier. Jika ValuePtr adalah nilai bilangan bulat, nilai tersebut dapat dianggap sebagai 8 byte (SQLLEN), 4 byte (SQLINTEGER) atau 2 byte (SQLSMALLINT), tergantung pada nilai argumen FieldIdentifier .

BufferLength
[Input] Jika FieldIdentifier adalah bidang yang ditentukan ODBC dan ValuePtr menunjuk ke string karakter atau buffer biner, argumen ini harus panjang *ValuePtr. Untuk data string karakter, argumen ini harus berisi jumlah byte dalam string.

Jika FieldIdentifier adalah bidang yang ditentukan ODBC dan ValuePtr adalah bilangan bulat, BufferLength diabaikan.

Jika FieldIdentifier adalah bidang yang ditentukan driver, aplikasi menunjukkan sifat bidang 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 nilai panjang tetap, maka BufferLength adalah SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT, atau SQL_IS_USMALLINT, yang sesuai.

Kembali

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, atau SQL_INVALID_HANDLE.

Diagnostik

Ketika SQLSetDescField 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 umumnya dikembalikan oleh SQLSetDescField 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.)
01S02 Nilai opsi berubah Driver tidak mendukung nilai yang ditentukan dalam *ValuePtr (jika ValuePtr adalah pointer) atau nilai dalam ValuePtr (jika ValuePtr adalah nilai bilangan bulat), atau *ValuePtr tidak valid karena kondisi kerja implementasi, sehingga driver menggantikan nilai yang sama. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.)
07009 Indeks deskriptor tidak valid Argumen FieldIdentifier adalah bidang rekaman, argumen RecNumber adalah 0, dan argumen DescriptorHandle yang dirujuk ke handel IPD.

Argumen RecNumber kurang dari 0, dan argumen DescriptorHandle yang dirujuk ke ARD atau APD.

Argumen RecNumber lebih besar dari jumlah maksimum kolom atau parameter yang dapat didukung sumber data, dan argumen DescriptorHandle yang dirujuk ke APD atau ARD.

(DM) Argumen FieldIdentifier SQL_DESC_COUNT, dan argumen *ValuePtr kurang dari 0.

Argumen RecNumber sama dengan 0, dan argumen DescriptorHandle mengacu pada APD yang dialokasikan secara implisit. (Kesalahan ini tidak terjadi dengan deskriptor aplikasi yang dialokasikan secara eksplisit, karena tidak diketahui apakah deskriptor aplikasi yang dialokasikan secara eksplisit adalah APD atau ARD hingga waktu eksekusi.)
08S01 Kegagalan tautan komunikasi Tautan komunikasi antara driver dan sumber data tempat driver tersambung gagal sebelum fungsi selesai diproses.
22001 Data string, terpotong kanan Argumen FieldIdentifier SQL_DESC_NAME, dan argumen BufferLength adalah nilai yang lebih besar dari SQL_MAX_IDENTIFIER_LEN.
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) DescriptorHandle dikaitkan dengan StatementHandle tempat fungsi eksekusi asinkron (bukan yang ini) dipanggil dan masih dijalankan ketika fungsi ini dipanggil.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos dipanggil untuk StatementHandle tempat DescriptorHandle dikaitkan 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 fungsi SQLSetDescField dipanggil.

(DM) SQLExecute, SQLExecDirect, atau SQLMoreResults dipanggil untuk salah satu handel pernyataan yang terkait dengan DescriptorHandle dan dikembalikan SQL_PARAM_DATA_AVAILABLE. Fungsi ini dipanggil sebelum data diambil untuk semua parameter yang dialirkan.
HY013 Kesalahan manajemen memori Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah.
HY016 Tidak dapat mengubah deskriptor baris implementasi Argumen DescriptorHandle dikaitkan dengan IRD, dan argumen FieldIdentifier tidak SQL_DESC_ARRAY_STATUS_PTR atau SQL_DESC_ROWS_PROCESSED_PTR.
HY021 Informasi deskriptor yang tidak konsisten Bidang SQL_DESC_TYPE dan SQL_DESC_DATETIME_INTERVAL_CODE tidak membentuk jenis ODBC SQL yang valid atau jenis SQL khusus driver yang valid (untuk IPD) atau tipe ODBC C yang valid (untuk APD atau ARD).

Informasi deskriptor yang diperiksa selama pemeriksaan konsistensi tidak konsisten. (Lihat "Pemeriksaan Konsistensi" di SQLSetDescRec.)
HY090 String atau panjang buffer tidak valid (DM) *ValuePtr adalah string karakter, dan BufferLength kurang dari nol tetapi tidak sama dengan SQL_NTS.

(DM) Driver adalah driver ODBC 2*.x*, deskriptor adalah ARD, argumen ColumnNumber diatur ke 0, dan nilai yang ditentukan untuk argumen BufferLength tidak sama dengan 4.
HY091 Pengidentifikasi bidang deskriptor tidak valid Nilai yang ditentukan untuk argumen FieldIdentifier bukan bidang yang ditentukan ODBC dan bukan nilai yang ditentukan implementasi.

Argumen FieldIdentifier tidak valid untuk argumen DescriptorHandle .

Argumen FieldIdentifier adalah bidang baca-saja yang ditentukan ODBC.
HY092 Pengidentifikasi atribut/opsi tidak valid Nilai dalam *ValuePtr tidak valid untuk argumen FieldIdentifier .

Argumen FieldIdentifier SQL_DESC_UNNAMED, dan ValuePtr SQL_NAMED.
HY105 Jenis parameter tidak valid (DM) Nilai yang ditentukan untuk bidang SQL_DESC_PARAMETER_TYPE tidak valid. (Untuk informasi selengkapnya, lihat "Bagian Argumen InputOutputType " di SQLBindParameter.)
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 Apa yang Baru di ODBC 3.8.
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 SQLSetDescField untuk mengatur bidang deskriptor satu per satu. Satu panggilan ke SQLSetDescField mengatur satu bidang dalam satu deskriptor. Fungsi ini dapat dipanggil untuk mengatur bidang apa pun dalam jenis deskriptor apa pun, asalkan bidang dapat diatur. (Lihat tabel nanti di bagian ini.)

Catatan

Jika panggilan ke SQLSetDescField gagal, konten catatan deskriptor yang diidentifikasi oleh argumen RecNumber tidak ditentukan.

Fungsi lain dapat dipanggil untuk mengatur beberapa bidang deskriptor dengan satu panggilan fungsi. Fungsi SQLSetDescRec menetapkan berbagai bidang yang memengaruhi jenis data dan buffer yang terikat ke kolom atau parameter (bidang SQL_DESC_TYPE, SQL_DESC_DATETIME_INTERVAL_CODE, SQL_DESC_OCTET_LENGTH, SQL_DESC_PRECISION, SQL_DESC_SCALE, SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR, dan SQL_DESC_INDICATOR_PTR). SQLBindCol atau SQLBindParameter dapat digunakan untuk membuat spesifikasi lengkap untuk pengikatan kolom atau parameter. Fungsi-fungsi ini mengatur grup bidang deskriptor tertentu dengan satu panggilan fungsi.

SQLSetDescField dapat dipanggil untuk mengubah buffer pengikatan dengan menambahkan offset ke penunjuk pengikatan (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, atau SQL_DESC_OCTET_LENGTH_PTR). Ini mengubah buffer pengikatan tanpa memanggil SQLBindCol atau SQLBindParameter, yang memungkinkan aplikasi untuk mengubah SQL_DESC_DATA_PTR tanpa mengubah bidang lain, seperti SQL_DESC_DATA_TYPE.

Jika aplikasi memanggil SQLSetDescField untuk mengatur bidang apa pun selain SQL_DESC_COUNT atau bidang yang ditangguhkan SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR, atau SQL_DESC_INDICATOR_PTR, rekaman menjadi tidak terikat.

Bidang header deskriptor diatur dengan memanggil SQLSetDescField dengan FieldIdentifier yang sesuai. Banyak bidang header juga merupakan atribut pernyataan, sehingga juga dapat diatur oleh panggilan ke SQLSetStmtAttr. Ini memungkinkan aplikasi untuk mengatur bidang deskriptor tanpa terlebih dahulu mendapatkan handel deskriptor. Ketika SQLSetDescField dipanggil untuk mengatur bidang header, argumen RecNumber diabaikan.

RecNumber 0 digunakan untuk mengatur bidang bookmark.

Catatan

Atribut pernyataan SQL_ATTR_USE_BOOKMARKS harus selalu diatur sebelum memanggil SQLSetDescField untuk mengatur bidang marka buku. Meskipun ini tidak wajib, sangat disarankan.

Urutan Pengaturan Bidang Deskriptor

Saat mengatur bidang deskriptor dengan memanggil SQLSetDescField, aplikasi harus mengikuti urutan tertentu:

  1. Aplikasi harus terlebih dahulu mengatur bidang SQL_DESC_TYPE, SQL_DESC_CONCISE_TYPE, atau SQL_DESC_DATETIME_INTERVAL_CODE.

  2. Setelah salah satu bidang ini diatur, aplikasi dapat mengatur atribut jenis data, dan driver mengatur bidang atribut jenis data ke nilai default yang sesuai untuk jenis data. Default otomatis bidang atribut jenis memastikan bahwa deskriptor selalu siap digunakan setelah aplikasi menentukan jenis data. Jika aplikasi secara eksplisit mengatur atribut jenis data, aplikasi akan mengambil alih atribut default.

  3. Setelah salah satu bidang yang tercantum di langkah 1 telah diatur, dan atribut jenis data telah diatur, aplikasi dapat mengatur SQL_DESC_DATA_PTR. Ini meminta pemeriksaan konsistensi bidang deskriptor. Jika aplikasi mengubah jenis data atau atribut setelah mengatur bidang SQL_DESC_DATA_PTR, driver mengatur SQL_DESC_DATA_PTR ke penunjuk null, membatalkan pengikatan rekaman. Ini memaksa aplikasi untuk menyelesaikan langkah-langkah yang tepat secara berurutan, sebelum catatan deskriptor dapat digunakan.

Inisialisasi Bidang Deskriptor

Saat deskriptor dialokasikan, bidang dalam deskriptor dapat diinisialisasi ke nilai default, diinisialisasi tanpa nilai default, atau tidak ditentukan untuk jenis deskriptor. Tabel berikut menunjukkan inisialisasi setiap bidang untuk setiap jenis deskriptor, dengan "D" yang menunjukkan bahwa bidang diinisialisasi dengan default, dan "ND" menunjukkan bahwa bidang diinisialisasi tanpa default. Jika angka ditampilkan, nilai default bidang adalah angka tersebut. Tabel juga menunjukkan apakah bidang dibaca/ditulis (R/W) atau baca-saja (R).

Bidang IRD memiliki nilai default hanya setelah pernyataan disiapkan atau dijalankan dan IRD telah diisi, bukan ketika handel pernyataan atau deskriptor telah dialokasikan. Sampai IRD diisi, setiap upaya untuk mendapatkan akses ke bidang IRD akan mengembalikan kesalahan.

Beberapa bidang deskriptor didefinisikan untuk satu atau beberapa bidang, tetapi tidak semua, dari jenis deskriptor (ARD dan IRD, serta APD dan IPD). Ketika bidang tidak terdefinisi untuk jenis deskriptor, bidang tidak diperlukan oleh salah satu fungsi yang menggunakan deskriptor tersebut.

Bidang yang dapat diakses oleh SQLGetDescField tidak selalu dapat diatur oleh SQLSetDescField. Bidang yang dapat diatur oleh SQLSetDescField tercantum dalam tabel berikut.

Inisialisasi bidang header diuraikan dalam tabel berikut.

Nama bidang header Jenis R/W Default
SQL_DESC_ALLOC_TYPE SQLSMALLINT ARD: R APD: R IRD: R IPD: R ARD: SQL_DESC_ALLOC_AUTO untuk implisit atau SQL_DESC_ALLOC_USER untuk eksplisit

APD: SQL_DESC_ALLOC_AUTO untuk implisit atau SQL_DESC_ALLOC_USER untuk eksplisit

IRD: SQL_DESC_ALLOC_AUTO

IPD: SQL_DESC_ALLOC_AUTO
SQL_DESC_ARRAY_SIZE SQLULEN ARD: R/W APD: R/W IRD: IPD yang tidak digunakan: Tidak digunakan ARD:[1] APD:[1] IRD: IPD yang tidak digunakan: Tidak digunakan
SQL_DESC_ARRAY_STATUS_PTR SQLUSMALLINT* ARD: R/W APD: R/W IRD: R/W IPD: R/W ARD: Null ptr APD: Null ptr IRD: Null ptr IPD: Null ptr
SQL_DESC_BIND_OFFSET_PTR SQLLEN* ARD: R/W APD: R/W IRD: IPD yang tidak digunakan: Tidak digunakan ARD: Null ptr APD: Null ptr IRD: IPD tidak digunakan: Tidak digunakan
SQL_DESC_BIND_TYPE SQLINTEGER ARD: R/W APD: R/W IRD: IPD yang tidak digunakan: Tidak digunakan ARD: SQL_BIND_BY_COLUMN

APD: SQL_BIND_BY_COLUMN

IRD: Tidak digunakan

IPD: Tidak digunakan
SQL_DESC_COUNT SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: 0 APD: 0 IRD: D IPD: 0
SQL_DESC_ROWS_PROCESSED_PTR SQLULEN* ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R/W IPD: R/W ARD: APD tidak digunakan: IRD yang Tidak Digunakan: Null ptr IPD: Null ptr

[1] Bidang ini didefinisikan hanya ketika IPD secara otomatis diisi oleh driver. Jika tidak, mereka tidak ditentukan. Jika aplikasi mencoba mengatur bidang ini, SQLSTATE HY091 (Pengidentifikasi bidang deskriptor tidak valid) akan dikembalikan.

Inisialisasi bidang rekaman seperti yang diperlihatkan dalam tabel berikut ini.

Nama bidang rekaman Jenis R/W Default
SQL_DESC_AUTO_UNIQUE_VALUE SQLINTEGER ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_BASE_COLUMN_NAME SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_BASE_TABLE_NAME SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_CASE_SENSITIVE SQLINTEGER ARD: APD yang tidak digunakan: IRD yang tidak digunakan: R IPD: R ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: D[1]
SQL_DESC_CATALOG_NAME SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_CONCISE_TYPE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: SQL_C_ APD DEFAULT: SQL_C_ DEFAULT IRD: D IPD: ND
SQL_DESC_DATA_PTR SQLPOINTER ARD: R/W APD: R/W IRD: IPD yang tidak digunakan: Tidak digunakan ARD: Null ptr APD: Null ptr IRD: IPD tidak digunakan: Tidak digunakan[2]
SQL_DESC_DATETIME_INTERVAL_CODE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_DATETIME_INTERVAL_PRECISION SQLINTEGER ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_DISPLAY_SIZE SQLLEN ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_FIXED_PREC_SCALE SQLSMALLINT ARD: APD yang tidak digunakan: IRD yang tidak digunakan: R IPD: R ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: D[1]
SQL_DESC_INDICATOR_PTR SQLLEN * ARD: R/W APD: R/W IRD: IPD yang tidak digunakan: Tidak digunakan ARD: Null ptr APD: Null ptr IRD: IPD tidak digunakan: Tidak digunakan
SQL_DESC_LABEL SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_LENGTH SQLULEN ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_LITERAL_PREFIX SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_LITERAL_SUFFIX SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_LOCAL_TYPE_NAME SQLCHAR * ARD: APD yang tidak digunakan: IRD yang tidak digunakan: R IPD: R ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: D[1]
SQL_DESC_NAME SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NULLABLE SQLSMALLINT ARD: APD yang tidak digunakan: IRD yang tidak digunakan: R IPD: R ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NUM_PREC_RADIX SQLINTEGER ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_OCTET_LENGTH SQLLEN ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_OCTET_LENGTH_PTR SQLLEN * ARD: R/W APD: R/W IRD: IPD yang tidak digunakan: Tidak digunakan ARD: Null ptr APD: Null ptr IRD: IPD tidak digunakan: Tidak digunakan
SQL_DESC_PARAMETER_TYPE SQLSMALLINT ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: IPD yang Tidak Digunakan: R/W ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: IPD yang Tidak Digunakan: D=SQL_PARAM_INPUT
SQL_DESC_PRECISION SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_ROWVER SQLSMALLINT ARD: Tidak digunakan

APD: Tidak digunakan

IRD: R

IPD: R
ARD: Tidak digunakan

APD: Tidak digunakan

IRD: ND

IPD: ND
SQL_DESC_SCALE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_SCHEMA_NAME SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_SEARCHABLE SQLSMALLINT ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_TABLE_NAME SQLCHAR * ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan
SQL_DESC_TYPE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: SQL_C_DEFAULT APD: SQL_C_DEFAULT IRD: D IPD: ND
SQL_DESC_TYPE_NAME SQLCHAR * ARD: APD yang tidak digunakan: IRD yang tidak digunakan: R IPD: R ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: D[1]
SQL_DESC_UNNAMED SQLSMALLINT ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_UNSIGNED SQLSMALLINT ARD: APD yang tidak digunakan: IRD yang tidak digunakan: R IPD: R ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: D[1]
SQL_DESC_UPDATABLE SQLSMALLINT ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: R IPD: Tidak Digunakan ARD: APD yang Tidak Digunakan: IRD yang Tidak Digunakan: D IPD: Tidak Digunakan

[1] Bidang ini didefinisikan hanya ketika IPD secara otomatis diisi oleh driver. Jika tidak, mereka tidak ditentukan. Jika aplikasi mencoba mengatur bidang ini, SQLSTATE HY091 (Pengidentifikasi bidang deskriptor tidak valid) akan dikembalikan.

[2] Bidang SQL_DESC_DATA_PTR di IPD dapat diatur untuk memaksa pemeriksaan konsistensi. Dalam panggilan berikutnya ke SQLGetDescField atau SQLGetDescRec, driver tidak diperlukan untuk mengembalikan nilai yang SQL_DESC_DATA_PTR diatur.

Argumen FieldIdentifier

Argumen FieldIdentifier menunjukkan bidang deskriptor yang akan diatur. Deskriptor berisi header deskriptor, yang terdiri dari bidang header yang dijelaskan di bagian berikutnya, "Bidang Header," dan nol atau lebih rekaman deskriptor, yang terdiri dari bidang rekaman yang dijelaskan di bagian mengikuti bagian "Bidang Header".

Bidang Header

Setiap deskriptor memiliki header yang terdiri dari bidang berikut:

SQL_DESC_ALLOC_TYPE [Semua]
Bidang header SQLSMALLINT baca-saja ini menentukan apakah deskriptor dialokasikan secara otomatis oleh driver atau secara eksplisit oleh aplikasi. Aplikasi dapat memperoleh, tetapi tidak memodifikasi, bidang ini. Bidang diatur ke SQL_DESC_ALLOC_AUTO oleh driver jika deskriptor dialokasikan secara otomatis oleh driver. Ini diatur ke SQL_DESC_ALLOC_USER oleh driver jika deskriptor dialokasikan secara eksplisit oleh aplikasi.

SQL_DESC_ARRAY_SIZE [Deskriptor aplikasi]
Di ARD, bidang header SQLULEN ini menentukan jumlah baris dalam set baris. Ini adalah jumlah baris yang akan dikembalikan oleh panggilan ke SQLFetch atau SQLFetchScroll atau untuk dioperasikan dengan panggilan ke SQLBulkOperations atau SQLSetPos.

Dalam APD, bidang header SQLULEN ini menentukan jumlah nilai untuk setiap parameter.

Nilai default bidang ini adalah 1. Jika SQL_DESC_ARRAY_SIZE lebih besar dari 1, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, dan SQL_DESC_OCTET_LENGTH_PTR APD atau ARD menunjuk ke array. Kardinalitas setiap array sama dengan nilai bidang ini.

Bidang di ARD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_ROW_ARRAY_SIZE. Bidang di APD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_PARAMSET_SIZE.

SQL_DESC_ARRAY_STATUS_PTR [Semua]
Untuk setiap jenis deskriptor, bidang header SQLUSMALLINT * ini menunjuk ke array nilai SQLUSMALLINT. Array ini dinamai sebagai berikut: array status baris (IRD), parameter status array (IPD), row operation array (ARD), dan parameter operation array (APD).

Di IRD, bidang header ini menunjuk ke array status baris yang berisi nilai status setelah panggilan ke SQLBulkOperations, SQLFetch, SQLFetchScroll, atau SQLSetPos. Array memiliki elemen sebanyak ada baris dalam set baris. Aplikasi harus mengalokasikan array SQLUSMALLINTs dan mengatur bidang ini untuk menunjuk ke array. Bidang diatur ke pointer null secara default. Driver akan mengisi array - kecuali bidang SQL_DESC_ARRAY_STATUS_PTR diatur ke penunjuk null, dalam hal ini tidak ada nilai status yang dihasilkan dan array tidak diisi.

Perhatian

Perilaku driver tidak terdefinisi jika aplikasi mengatur elemen array status baris yang ditunjukkan oleh bidang SQL_DESC_ARRAY_STATUS_PTR IRD.

Array awalnya diisi oleh panggilan ke SQLBulkOperations, SQLFetch, SQLFetchScroll, atau SQLSetPos. Jika panggilan tidak mengembalikan SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO, konten array yang ditunjukkan oleh bidang ini tidak ditentukan. Elemen dalam array dapat berisi nilai berikut:

  • SQL_ROW_SUCCESS: Baris berhasil diambil dan tidak berubah sejak terakhir diambil.

  • SQL_ROW_SUCCESS_WITH_INFO: Baris berhasil diambil dan tidak berubah sejak terakhir diambil. Namun, peringatan dikembalikan tentang baris tersebut.

  • SQL_ROW_ERROR: Terjadi kesalahan saat mengambil baris.

  • SQL_ROW_UPDATED: Baris berhasil diambil dan telah diperbarui sejak terakhir diambil. Jika baris diambil lagi, statusnya adalah SQL_ROW_SUCCESS.

  • SQL_ROW_DELETED: Baris telah dihapus sejak terakhir kali diambil.

  • SQL_ROW_ADDED: Baris disisipkan oleh SQLBulkOperations. Jika baris diambil lagi, statusnya adalah SQL_ROW_SUCCESS.

  • SQL_ROW_NOROW: Set baris tumpang tindih dengan akhir tataan hasil, dan tidak ada baris yang dikembalikan yang sesuai dengan elemen array status baris ini.

Bidang di IRD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_ROW_STATUS_PTR.

Bidang SQL_DESC_ARRAY_STATUS_PTR IRD hanya valid setelah SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO dikembalikan. Jika kode pengembalian bukan salah satu dari ini, lokasi yang ditujukan oleh SQL_DESC_ROWS_PROCESSED_PTR tidak ditentukan.

Di IPD, bidang header ini menunjuk ke array status parameter yang berisi informasi status untuk setiap set nilai parameter setelah panggilan ke SQLExecute atau SQLExecDirect. Jika panggilan ke SQLExecute atau SQLExecDirect tidak mengembalikan SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO, konten array yang diarahkan oleh bidang ini tidak terdefinisi. Aplikasi harus mengalokasikan array SQLUSMALLINTs dan mengatur bidang ini untuk menunjuk ke array. Driver akan mengisi array - kecuali bidang SQL_DESC_ARRAY_STATUS_PTR diatur ke penunjuk null, dalam hal ini tidak ada nilai status yang dihasilkan dan array tidak diisi. Elemen dalam array dapat berisi nilai berikut:

  • SQL_PARAM_SUCCESS: Pernyataan SQL berhasil dijalankan untuk serangkaian parameter ini.

  • SQL_PARAM_SUCCESS_WITH_INFO: Pernyataan SQL berhasil dijalankan untuk serangkaian parameter ini; namun, informasi peringatan tersedia dalam struktur data diagnostik.

  • SQL_PARAM_ERROR: Terjadi kesalahan dalam memproses kumpulan parameter ini. Informasi kesalahan tambahan tersedia dalam struktur data diagnostik.

  • SQL_PARAM_UNUSED: Kumpulan parameter ini tidak digunakan, mungkin karena fakta bahwa beberapa set parameter sebelumnya menyebabkan kesalahan yang membatalkan pemrosesan lebih lanjut, atau karena SQL_PARAM_IGNORE diatur untuk kumpulan parameter tersebut dalam array yang ditentukan oleh bidang SQL_DESC_ARRAY_STATUS_PTR APD.

  • SQL_PARAM_DIAG_UNAVAILABLE: Informasi diagnostik tidak tersedia. Contohnya adalah ketika driver memperlakukan array parameter sebagai unit monolitik sehingga tidak menghasilkan tingkat informasi kesalahan ini.

Bidang di IPD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_PARAM_STATUS_PTR.

Di ARD, bidang header ini menunjuk ke array operasi baris nilai yang dapat diatur oleh aplikasi untuk menunjukkan apakah baris ini akan diabaikan untuk operasi SQLSetPos . Elemen dalam array dapat berisi nilai berikut:

  • SQL_ROW_PROCEED: Baris disertakan dalam operasi massal menggunakan SQLSetPos. (Pengaturan ini tidak menjamin bahwa operasi akan terjadi pada baris. Jika baris memiliki status SQL_ROW_ERROR dalam array status baris IRD, driver mungkin tidak dapat melakukan operasi di baris.)

  • SQL_ROW_IGNORE: Baris dikecualikan dari operasi massal menggunakan SQLSetPos.

Jika tidak ada elemen array yang diatur, semua baris disertakan dalam operasi massal. Jika nilai dalam bidang SQL_DESC_ARRAY_STATUS_PTR ARD adalah penunjuk null, semua baris disertakan dalam operasi massal; interpretasi sama seperti jika penunjuk menunjuk ke array yang valid dan semua elemen array SQL_ROW_PROCEED. Jika elemen dalam array diatur ke SQL_ROW_IGNORE, nilai dalam array status baris untuk baris yang diabaikan tidak diubah.

Bidang di ARD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_ROW_OPERATION_PTR.

Dalam APD, bidang header ini menunjuk ke array operasi parameter nilai yang dapat diatur oleh aplikasi untuk menunjukkan apakah kumpulan parameter ini akan diabaikan ketika SQLExecute atau SQLExecDirect dipanggil. Elemen dalam array dapat berisi nilai berikut:

  • SQL_PARAM_PROCEED: Kumpulan parameter disertakan dalam panggilan SQLExecute atau SQLExecDirect .

  • SQL_PARAM_IGNORE: Kumpulan parameter dikecualikan dari panggilan SQLExecute atau SQLExecDirect .

Jika tidak ada elemen array yang diatur, semua set parameter dalam array digunakan dalam panggilan SQLExecute atau SQLExecDirect . Jika nilai di bidang SQL_DESC_ARRAY_STATUS_PTR APD adalah penunjuk null, semua set parameter digunakan; interpretasi sama seperti jika pointer menunjuk ke array yang valid dan semua elemen array SQL_PARAM_PROCEED.

Bidang di APD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_PARAM_OPERATION_PTR.

SQL_DESC_BIND_OFFSET_PTR [Deskriptor aplikasi]
Bidang header SQLLEN * ini menunjuk ke offset pengikatan. Ini diatur ke penunjuk null secara default. Jika bidang ini bukan penunjuk null, driver mendereferensikan penunjuk dan menambahkan nilai dereferensi ke setiap bidang yang ditangguhkan yang memiliki nilai non-null dalam catatan deskriptor (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, dan SQL_DESC_OCTET_LENGTH_PTR) pada waktu pengambilan dan menggunakan nilai pointer baru saat mengikat.

Offset pengikatan selalu ditambahkan langsung ke nilai di bidang SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, dan SQL_DESC_OCTET_LENGTH_PTR. Jika offset diubah ke nilai yang berbeda, nilai baru masih ditambahkan langsung ke nilai di setiap bidang deskriptor. Offset baru tidak ditambahkan ke nilai bidang ditambah offset sebelumnya.

Bidang ini adalah bidang yang ditangguhkan: Bidang ini tidak digunakan pada saat diatur tetapi digunakan di lain waktu oleh driver ketika perlu menentukan alamat untuk buffer data.

Bidang di ARD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_ROW_BIND_OFFSET_PTR. Bidang di ARD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_PARAM_BIND_OFFSET_PTR.

Untuk informasi selengkapnya, lihat deskripsi pengikatan row-wise di SQLFetchScroll dan SQLBindParameter.

SQL_DESC_BIND_TYPE [Deskriptor aplikasi]
Bidang header SQLUINTEGER ini mengatur orientasi pengikatan yang akan digunakan untuk mengikat kolom atau parameter.

Di ARD, bidang ini menentukan orientasi pengikatan saat SQLFetchScroll atau SQLFetch dipanggil pada handel pernyataan terkait.

Untuk memilih pengikatan kolom yang bijaksana untuk kolom, bidang ini diatur ke SQL_BIND_BY_COLUMN (default).

Bidang di ARD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan Atribut SQL_ATTR_ROW_BIND_TYPE.

Dalam APD, bidang ini menentukan orientasi pengikatan yang akan digunakan untuk parameter dinamis.

Untuk memilih pengikatan kolom yang bijaksana untuk parameter, bidang ini diatur ke SQL_BIND_BY_COLUMN (default).

Bidang di APD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan Atribut SQL_ATTR_PARAM_BIND_TYPE.

SQL_DESC_COUNT [Semua]
Bidang header SQLSMALLINT ini menentukan indeks berbasis 1 dari rekaman bernomor tertinggi yang berisi data. Saat driver mengatur struktur data untuk deskriptor, driver juga harus mengatur bidang SQL_DESC_COUNT untuk menunjukkan berapa banyak rekaman yang signifikan. Ketika aplikasi mengalokasikan instans struktur data ini, aplikasi tidak perlu menentukan berapa banyak rekaman yang akan dipesan ruangnya. Karena aplikasi menentukan konten rekaman, driver mengambil tindakan yang diperlukan untuk memastikan bahwa handel deskriptor mengacu pada struktur data dengan ukuran yang memadai.

SQL_DESC_COUNT bukan hitungan semua kolom data yang terikat (jika bidang berada di ARD) atau dari semua parameter yang terikat (jika bidang berada dalam APD), tetapi jumlah rekaman bernomor tertinggi. Jika kolom atau parameter bernomor tertinggi tidak terikat, maka SQL_DESC_COUNT diubah ke jumlah kolom atau parameter bernomor tertinggi berikutnya. Jika kolom atau parameter dengan angka yang kurang dari jumlah kolom bernomor tertinggi tidak terikat (dengan memanggil SQLBindCol dengan argumen TargetValuePtr yang diatur ke pointer null, atau SQLBindParameter dengan argumen ParameterValuePtr diatur ke pointer null), SQL_DESC_COUNT tidak diubah. Jika kolom atau parameter tambahan terikat dengan angka yang lebih besar dari rekaman bernomor tertinggi yang berisi data, driver secara otomatis meningkatkan nilai di bidang SQL_DESC_COUNT. Jika semua kolom tidak terikat dengan memanggil SQLFreeStmt dengan opsi SQL_UNBIND, bidang SQL_DESC_COUNT di ARD dan IRD diatur ke 0. Jika SQLFreeStmt dipanggil dengan opsi SQL_RESET_PARAMS, bidang SQL_DESC_COUNT di APD dan IPD diatur ke 0.

Nilai dalam SQL_DESC_COUNT dapat diatur secara eksplisit oleh aplikasi dengan memanggil SQLSetDescField. Jika nilai dalam SQL_DESC_COUNT secara eksplisit menurun, semua rekaman dengan angka yang lebih besar dari nilai baru dalam SQL_DESC_COUNT dihapus secara efektif. Jika nilai dalam SQL_DESC_COUNT secara eksplisit diatur ke 0 dan bidang berada di ARD, semua buffer data kecuali kolom bookmark terikat dirilis.

Jumlah rekaman di bidang ARD ini tidak menyertakan kolom marka buku terikat. Satu-satunya cara untuk membatalkan ikatan kolom bookmark adalah dengan mengatur bidang SQL_DESC_DATA_PTR ke penunjuk null.

SQL_DESC_ROWS_PROCESSED_PTR [Deskriptor implementasi]
Dalam IRD, bidang header SQLULEN * ini menunjuk ke buffer yang berisi jumlah baris yang diambil setelah panggilan ke SQLFetch atau SQLFetchScroll, atau jumlah baris yang terpengaruh dalam operasi massal yang dilakukan oleh panggilan ke SQLBulkOperations atau SQLSetPos, termasuk baris kesalahan.

Dalam IPD, bidang header SQLUINTEGER * ini menunjuk ke buffer yang berisi jumlah set parameter yang telah diproses, termasuk set kesalahan. Tidak ada angka yang akan dikembalikan jika ini adalah penunjuk null.

SQL_DESC_ROWS_PROCESSED_PTR hanya berlaku setelah SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO dikembalikan setelah panggilan ke SQLFetch atau SQLFetchScroll (untuk bidang IRD) atau SQLExecute, SQLExecDirect, atau SQLParamData (untuk bidang IPD). Jika panggilan yang mengisi buffer yang ditujukkan oleh bidang ini tidak mengembalikan SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO, konten buffer tidak ditentukan, kecuali jika mengembalikan SQL_NO_DATA, dalam hal ini nilai dalam buffer diatur ke 0.

Bidang di ARD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_ROWS_FETCHED_PTR. Bidang di APD ini juga dapat diatur dengan memanggil SQLSetStmtAttr dengan atribut SQL_ATTR_PARAMS_PROCESSED_PTR.

Buffer yang dialokasikan oleh bidang ini dialokasikan oleh aplikasi. Ini adalah buffer output yang ditangguhkan yang diatur oleh driver. Ini diatur ke penunjuk null secara default.

Bidang Rekaman

Setiap deskriptor berisi satu atau beberapa rekaman yang terdiri dari bidang yang menentukan data kolom atau parameter dinamis, tergantung pada jenis deskriptor. Setiap rekaman adalah definisi lengkap dari satu kolom atau parameter.

SQL_DESC_AUTO_UNIQUE_VALUE [IRDs]
Bidang rekaman SQLINTEGER baca-saja ini berisi SQL_TRUE jika kolom adalah kolom yang bertahas otomatis, atau SQL_FALSE jika kolom bukan kolom yang ditambahkan secara otomatis. Bidang ini bersifat baca-saja, tetapi kolom penambah otomatis yang mendasar belum tentu bersifat baca-saja.

SQL_DESC_BASE_COLUMN_NAME [IRDs]
Bidang catatan SQLCHAR * baca-saja ini berisi nama kolom dasar untuk kolom kumpulan hasil. Jika nama kolom dasar tidak ada (seperti dalam kasus kolom yang merupakan ekspresi), variabel ini berisi string kosong.

SQL_DESC_BASE_TABLE_NAME [IRDs]
Bidang catatan SQLCHAR * baca-saja ini berisi nama tabel dasar untuk kolom kumpulan hasil. Jika nama tabel dasar tidak dapat ditentukan atau tidak berlaku, variabel ini berisi string kosong.

SQL_DESC_CASE_SENSITIVE [Deskriptor implementasi]
Bidang rekaman SQLINTEGER baca-saja ini berisi SQL_TRUE jika kolom atau parameter diperlakukan sebagai peka huruf besar/kecil untuk kolase dan perbandingan, atau SQL_FALSE jika kolom tidak diperlakukan sebagai peka huruf besar/kecil untuk kolase dan perbandingan atau jika kolom bukan karakter.

SQL_DESC_CATALOG_NAME [IRDs]
Bidang catatan SQLCHAR * baca-saja ini berisi katalog untuk tabel dasar yang berisi kolom . Nilai yang dikembalikan bergantung pada driver jika kolom adalah ekspresi atau jika kolom adalah bagian dari tampilan. Jika sumber data tidak mendukung katalog atau katalog tidak dapat ditentukan, variabel ini berisi string kosong.

SQL_DESC_CONCISE_TYPE [Semua]
Bidang header SQLSMALLINT ini menentukan jenis data ringkas untuk semua jenis data, termasuk jenis data tanggalwaktu dan interval.

Nilai dalam bidang SQL_DESC_CONCISE_TYPE, SQL_DESC_TYPE, dan SQL_DESC_DATETIME_INTERVAL_CODE saling bergantung. Setiap kali salah satu bidang diatur, bidang lainnya juga harus diatur. SQL_DESC_CONCISE_TYPE dapat diatur dengan panggilan ke SQLBindCol atau SQLBindParameter, atau SQLSetDescField. SQL_DESC_TYPE dapat diatur dengan panggilan ke SQLSetDescField atau SQLSetDescRec.

Jika SQL_DESC_CONCISE_TYPE diatur ke tipe data ringkas selain tipe data interval atau tanggalwaktu, bidang SQL_DESC_TYPE diatur ke nilai yang sama dan bidang SQL_DESC_DATETIME_INTERVAL_CODE diatur ke 0.

Jika SQL_DESC_CONCISE_TYPE diatur ke jenis data tanggalwaktu atau interval ringkas, bidang SQL_DESC_TYPE diatur ke jenis verbose yang sesuai (SQL_DATETIME atau SQL_INTERVAL) dan bidang SQL_DESC_DATETIME_INTERVAL_CODE diatur ke subkode yang sesuai.

SQL_DESC_DATA_PTR [Deskriptor aplikasi dan IPD]
Bidang rekaman SQLPOINTER ini menunjuk ke variabel yang akan berisi nilai parameter (untuk APD) atau nilai kolom (untuk ARD). Bidang ini adalah bidang yang ditangguhkan. Ini tidak digunakan pada saat diatur tetapi digunakan di lain waktu oleh driver untuk mengambil data.

Kolom yang ditentukan oleh bidang SQL_DESC_DATA_PTR ARD tidak terikat jika argumen TargetValuePtr dalam panggilan ke SQLBindCol adalah pointer null atau jika bidang SQL_DESC_DATA_PTR di ARD diatur oleh panggilan ke SQLSetDescField atau SQLSetDescRec ke pointer null. Bidang lain tidak terpengaruh jika bidang SQL_DESC_DATA_PTR diatur ke penunjuk null.

Jika panggilan ke SQLFetch atau SQLFetchScroll yang mengisi buffer yang ditunjukkan oleh bidang ini tidak mengembalikan SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO, konten buffer tidak ditentukan.

Setiap kali bidang SQL_DESC_DATA_PTR APD, ARD, atau IPD diatur, driver memeriksa bahwa nilai di bidang SQL_DESC_TYPE berisi salah satu jenis data ODBC C yang valid atau jenis data khusus driver, dan bahwa semua bidang lain yang memengaruhi jenis data konsisten. Meminta pemeriksaan konsistensi adalah satu-satunya penggunaan bidang SQL_DESC_DATA_PTR IPD. Secara khusus, jika aplikasi menetapkan bidang SQL_DESC_DATA_PTR IPD dan kemudian memanggil SQLGetDescField di bidang ini, itu belum tentu mengembalikan nilai yang telah ditetapkannya. Untuk informasi selengkapnya, lihat "Pemeriksaan Konsistensi" di SQLSetDescRec.

SQL_DESC_DATETIME_INTERVAL_CODE [Semua]
Bidang catatan SQLSMALLINT ini berisi subkode untuk jenis data tanggalwaktu atau interval tertentu saat bidang SQL_DESC_TYPE SQL_DATETIME atau SQL_INTERVAL. Ini berlaku untuk jenis data SQL dan C. Kode ini terdiri dari nama jenis data dengan "CODE" yang digantikan untuk "TYPE" atau "C_TYPE" (untuk jenis tanggalwaktu), atau "CODE" diganti dengan "INTERVAL" atau "C_INTERVAL" (untuk jenis interval).

Jika SQL_DESC_TYPE dan SQL_DESC_CONCISE_TYPE dalam deskriptor aplikasi diatur ke SQL_C_DEFAULT dan deskriptor tidak terkait dengan handel pernyataan, konten SQL_DESC_DATETIME_INTERVAL_CODE tidak terdefinisi.

Bidang ini dapat diatur untuk tipe data tanggalwaktu yang tercantum dalam tabel berikut.

Jenis tanggalwaktu DATETIME_INTERVAL_CODE
SQL_TYPE_DATE/SQL_C_TYPE_DATE SQL_CODE_DATE
SQL_TYPE_TIME/SQL_C_TYPE_TIME SQL_CODE_TIME
SQL_TYPE_TIMESTAMP/ SQL_C_TYPE_TIMESTAMP SQL_CODE_TIMESTAMP

Bidang ini dapat diatur untuk tipe data interval yang tercantum dalam tabel berikut.

Jenis Interval DATETIME_INTERVAL_CODE
SQL_INTERVAL_DAY/ SQL_C_INTERVAL_DAY SQL_CODE_DAY
SQL_INTERVAL_DAY_TO_HOUR/ SQL_C_INTERVAL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR
SQL_INTERVAL_DAY_TO_MINUTE/ SQL_C_INTERVAL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE
SQL_INTERVAL_DAY_TO_SECOND/ SQL_C_INTERVAL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND
SQL_INTERVAL_HOUR/SQL_C_INTERVAL_HOUR SQL_CODE_HOUR
SQL_INTERVAL_HOUR_TO_MINUTE/SQL_C_INTERVAL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE
SQL_INTERVAL_HOUR_TO_SECOND/SQL_C_INTERVAL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND
SQL_INTERVAL_MINUTE/ SQL_C_INTERVAL_MINUTE SQL_CODE_MINUTE
SQL_INTERVAL_MINUTE_TO_SECOND/ SQL_C_INTERVAL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND
SQL_INTERVAL_MONTH/SQL_C_INTERVAL_MONTH SQL_CODE_MONTH
SQL_INTERVAL_SECOND/ SQL_C_INTERVAL_SECOND SQL_CODE_SECOND
SQL_INTERVAL_YEAR/SQL_C_INTERVAL_YEAR SQL_CODE_YEAR
SQL_INTERVAL_YEAR_TO_MONTH/SQL_C_INTERVAL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH

Untuk informasi selengkapnya tentang interval data dan bidang ini, lihat Pengidentifikasi dan Deskriptor Tipe Data.

SQL_DESC_DATETIME_INTERVAL_PRECISION [Semua]
Bidang rekaman SQLINTEGER ini berisi presisi terdepan interval jika bidang SQL_DESC_TYPE SQL_INTERVAL. Saat bidang SQL_DESC_DATETIME_INTERVAL_CODE diatur ke tipe data interval, bidang ini diatur ke presisi awal interval default.

SQL_DESC_DISPLAY_SIZE [IRDs]
Bidang rekaman SQLINTEGER baca-saja ini berisi jumlah karakter maksimum yang diperlukan untuk menampilkan data dari kolom.

SQL_DESC_FIXED_PREC_SCALE [Deskriptor implementasi]
Bidang catatan SQLSMALLINT baca-saja ini diatur ke SQL_TRUE jika kolom adalah kolom numerik yang tepat dan memiliki skala presisi dan nonzero tetap, atau untuk SQL_FALSE jika kolom bukan kolom numerik yang tepat dengan presisi dan skala tetap.

SQL_DESC_INDICATOR_PTR [Deskriptor aplikasi]
Di ARD, bidang rekaman SQLLEN * ini menunjuk ke variabel indikator. Variabel ini berisi SQL_NULL_DATA jika nilai kolom adalah NULL. Untuk APD, variabel indikator diatur ke SQL_NULL_DATA untuk menentukan argumen dinamis NULL. Jika tidak, variabel adalah nol (kecuali nilai dalam SQL_DESC_INDICATOR_PTR dan SQL_DESC_OCTET_LENGTH_PTR adalah pointer yang sama).

Jika bidang SQL_DESC_INDICATOR_PTR di ARD adalah penunjuk null, driver dicegah mengembalikan informasi tentang apakah kolom null atau tidak. Jika kolom null dan SQL_DESC_INDICATOR_PTR adalah pointer null, SQLSTATE 22002 (Variabel indikator diperlukan tetapi tidak disediakan) dikembalikan ketika driver mencoba mengisi buffer setelah panggilan ke SQLFetch atau SQLFetchScroll. Jika panggilan ke SQLFetch atau SQLFetchScroll tidak mengembalikan SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO, konten buffer tidak ditentukan.

Bidang SQL_DESC_INDICATOR_PTR menentukan apakah bidang yang ditujukan oleh SQL_DESC_OCTET_LENGTH_PTR diatur. Jika nilai data untuk kolom adalah NULL, driver mengatur variabel indikator ke SQL_NULL_DATA. Bidang yang ditujukkan oleh SQL_DESC_OCTET_LENGTH_PTR kemudian tidak diatur. Jika nilai NULL tidak ditemui selama pengambilan, buffer yang menunjuk ke SQL_DESC_INDICATOR_PTR diatur ke nol dan buffer yang ditujukkan oleh SQL_DESC_OCTET_LENGTH_PTR diatur ke panjang data.

Jika bidang SQL_DESC_INDICATOR_PTR dalam APD adalah penunjuk null, aplikasi tidak dapat menggunakan catatan deskriptor ini untuk menentukan argumen NULL.

Bidang ini adalah bidang yang ditangguhkan: Bidang ini tidak digunakan pada saat diatur tetapi digunakan di lain waktu oleh driver untuk menunjukkan nullability (untuk ARD) atau untuk menentukan nullability (untuk APD).

SQL_DESC_LABEL [IRDs]
Bidang rekaman SQLCHAR * baca-saja ini berisi label kolom atau judul. Jika kolom tidak memiliki label, variabel ini berisi nama kolom. Jika kolom tidak diberi nama dan tidak berlabel, variabel ini berisi string kosong.

SQL_DESC_LENGTH [Semua]
Bidang rekaman SQLULEN ini adalah panjang maksimum atau aktual string karakter dalam karakter atau jenis data biner dalam byte. Ini adalah panjang maksimum untuk jenis data panjang tetap, atau panjang aktual untuk jenis data panjang variabel. Nilainya selalu mengecualikan karakter penghentian null yang mengakhiri string karakter. Untuk nilai yang jenisnya SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP, atau salah satu jenis data interval SQL, bidang ini memiliki panjang karakter representasi string karakter dari nilai tanggalwaktu atau interval.

Nilai dalam bidang ini mungkin berbeda dari nilai untuk "panjang" seperti yang didefinisikan dalam ODBC 2*.x*. Untuk informasi selengkapnya, lihat Lampiran D: Jenis Data.

SQL_DESC_LITERAL_PREFIX [IRDs]
Bidang rekaman SQLCHAR * baca-saja ini berisi karakter atau karakter yang dikenal driver sebagai awalan untuk literal jenis data ini. Variabel ini berisi string kosong untuk jenis data yang awalan harfiahnya tidak berlaku.

SQL_DESC_LITERAL_SUFFIX [IRDs]
Bidang rekaman SQLCHAR * baca-saja ini berisi karakter atau karakter yang dikenal driver sebagai akhiran untuk literal jenis data ini. Variabel ini berisi string kosong untuk jenis data yang akhiran harfiahnya tidak berlaku.

SQL_DESC_LOCAL_TYPE_NAME [Deskriptor implementasi]
Bidang rekaman SQLCHAR * baca-saja ini berisi nama yang dilokalkan (bahasa asli) untuk jenis data yang mungkin berbeda dari nama reguler jenis data. Jika tidak ada nama yang dilokalkan, string kosong akan dikembalikan. Bidang ini hanya untuk tujuan tampilan.

SQL_DESC_NAME [Deskriptor implementasi]
Bidang rekaman SQLCHAR * ini dalam deskriptor baris berisi alias kolom, jika berlaku. Jika alias kolom tidak berlaku, nama kolom dikembalikan. Dalam kedua kasus, driver mengatur bidang SQL_DESC_UNNAMED ke SQL_NAMED saat mengatur bidang SQL_DESC_NAME. Jika tidak ada nama kolom atau alias kolom, driver mengembalikan string kosong di bidang SQL_DESC_NAME dan mengatur bidang SQL_DESC_UNNAMED ke SQL_UNNAMED.

Aplikasi dapat mengatur bidang SQL_DESC_NAME IPD ke nama parameter atau alias untuk menentukan parameter prosedur tersimpan berdasarkan nama. (Untuk informasi selengkapnya, lihat Parameter Pengikatan menurut Nama (Parameter Bernama).) Bidang SQL_DESC_NAME IRD adalah bidang baca-saja; SQLSTATE HY091 (Pengidentifikasi bidang deskriptor tidak valid) akan dikembalikan jika aplikasi mencoba mengaturnya.

Dalam IPD, bidang ini tidak terdefinisi jika driver tidak mendukung parameter bernama. Jika driver mendukung parameter bernama dan mampu menjelaskan parameter, nama parameter dikembalikan di bidang ini.

SQL_DESC_NULLABLE [Deskriptor implementasi]
Dalam IRD, bidang rekaman SQLSMALLINT baca-saja ini SQL_NULLABLE jika kolom dapat memiliki nilai NULL, SQL_NO_NULLS jika kolom tidak memiliki nilai NULL, atau SQL_NULLABLE_UNKNOWN jika tidak diketahui apakah kolom menerima nilai NULL. Bidang ini berkaitan dengan kolom kumpulan hasil, bukan kolom dasar.

Dalam IPD, bidang ini selalu diatur ke SQL_NULLABLE karena parameter dinamis selalu dapat diubah ke null dan tidak dapat diatur oleh aplikasi.

SQL_DESC_NUM_PREC_RADIX [Semua]
Bidang SQLINTEGER ini berisi nilai 2 jika jenis data di bidang SQL_DESC_TYPE adalah perkiraan jenis data numerik, karena bidang SQL_DESC_PRECISION berisi jumlah bit. Bidang ini berisi nilai 10 jika tipe data di bidang SQL_DESC_TYPE adalah tipe data numerik yang tepat, karena bidang SQL_DESC_PRECISION berisi jumlah digit desimal. Bidang ini diatur ke 0 untuk semua jenis data non-numerik.

SQL_DESC_OCTET_LENGTH [Semua]
Bidang rekaman SQLLEN ini berisi panjang, dalam byte, dari string karakter atau jenis data biner. Untuk karakter panjang tetap atau jenis biner, ini adalah panjang aktual dalam byte. Untuk karakter panjang variabel atau jenis biner, ini adalah panjang maksimum dalam byte. Nilai ini selalu mengecualikan ruang untuk karakter penghentian null untuk deskriptor implementasi dan selalu menyertakan ruang untuk karakter penghentian null untuk deskriptor aplikasi. Untuk data aplikasi, bidang ini berisi ukuran buffer. Untuk APD, bidang ini hanya didefinisikan untuk parameter output atau input/output.

SQL_DESC_OCTET_LENGTH_PTR [Deskriptor aplikasi]
Bidang rekaman SQLLEN * ini menunjuk ke variabel yang akan berisi panjang total dalam byte argumen dinamis (untuk deskriptor parameter) atau nilai kolom terikat (untuk deskriptor baris).

Untuk APD, nilai ini diabaikan untuk semua argumen kecuali string karakter dan biner; jika bidang ini menunjuk ke SQL_NTS, argumen dinamis harus dihentikan null. Untuk menunjukkan bahwa parameter terikat akan menjadi parameter data-at-execution, aplikasi mengatur bidang ini dalam catatan APD yang sesuai ke variabel yang, pada waktu eksekusi, akan berisi nilai SQL_DATA_AT_EXEC atau hasil makro SQL_LEN_DATA_AT_EXEC. Jika ada lebih dari satu bidang tersebut, SQL_DESC_DATA_PTR dapat diatur ke nilai yang mengidentifikasi parameter secara unik untuk membantu aplikasi menentukan parameter mana yang diminta.

Jika bidang OCTET_LENGTH_PTR ARD adalah penunjuk null, driver tidak mengembalikan informasi panjang untuk kolom. Jika bidang SQL_DESC_OCTET_LENGTH_PTR APD adalah penunjuk null, driver mengasumsikan bahwa string karakter dan nilai biner dihentikan null. (Nilai biner tidak boleh dihentikan null tetapi harus diberi panjang untuk menghindari pemotongan.)

Jika panggilan ke SQLFetch atau SQLFetchScroll yang mengisi buffer yang ditunjukkan oleh bidang ini tidak mengembalikan SQL_SUCCESS atau SQL_SUCCESS_WITH_INFO, konten buffer tidak ditentukan. Bidang ini adalah bidang yang ditangguhkan. Ini tidak digunakan pada saat diatur tetapi digunakan di lain waktu oleh driver untuk menentukan atau menunjukkan panjang oktet data.

SQL_DESC_PARAMETER_TYPE [IPD]
Bidang catatan SQLSMALLINT ini diatur ke SQL_PARAM_INPUT untuk parameter input, SQL_PARAM_INPUT_OUTPUT untuk parameter input/output, SQL_PARAM_OUTPUT untuk parameter output, SQL_PARAM_INPUT_OUTPUT_STREAM untuk parameter aliran input/output, atau SQL_PARAM_OUTPUT_STREAM untuk parameter yang dialirkan output. Ini diatur ke SQL_PARAM_INPUT secara default.

Untuk IPD, bidang diatur ke SQL_PARAM_INPUT secara default jika IPD tidak diisi secara otomatis oleh driver (atribut pernyataan SQL_ATTR_ENABLE_AUTO_IPD SQL_FALSE). Aplikasi harus mengatur bidang ini di IPD untuk parameter yang bukan parameter input.

SQL_DESC_PRECISION [Semua]
Bidang rekaman SQLSMALLINT ini berisi jumlah digit untuk jenis numerik yang tepat, jumlah bit dalam mantissa (presisi biner) untuk perkiraan jenis numerik, atau jumlah digit dalam komponen detik pecahan untuk jenis data SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP, atau SQL_INTERVAL_SECOND. Bidang ini tidak terdefinisi untuk semua jenis data lainnya.

Nilai dalam bidang ini mungkin berbeda dari nilai untuk "presisi" seperti yang didefinisikan dalam ODBC 2*.x*. Untuk informasi selengkapnya, lihat Lampiran D: Jenis Data.

SQL_DESC_ROWVER [Deskriptor implementasi]
Bidang SQLSMALLINTrecord ini menunjukkan apakah kolom secara otomatis dimodifikasi oleh DBMS saat baris diperbarui (misalnya, kolom jenis "tanda waktu" di SQL Server). Nilai bidang rekaman ini diatur ke SQL_TRUE jika kolom adalah kolom penerapan versi baris, dan untuk SQL_FALSE sebaliknya. Atribut kolom ini mirip dengan memanggil SQLSpecialColumns dengan IdentifierType of SQL_ROWVER untuk menentukan apakah kolom diperbarui secara otomatis.

SQL_DESC_SCALE [Semua]
Bidang rekaman SQLSMALLINT ini berisi skala yang ditentukan untuk jenis data desimal dan numerik. Bidang tidak terdefinisi untuk semua jenis data lainnya.

Nilai dalam bidang ini mungkin berbeda dari nilai untuk "skala" seperti yang didefinisikan dalam ODBC 2*.x*. Untuk informasi selengkapnya, lihat Lampiran D: Jenis Data.

SQL_DESC_SCHEMA_NAME [IRDs]
Bidang rekaman SQLCHAR * baca-saja ini berisi nama skema tabel dasar yang berisi kolom . Nilai yang dikembalikan bergantung pada driver jika kolom adalah ekspresi atau jika kolom adalah bagian dari tampilan. Jika sumber data tidak mendukung skema atau nama skema tidak dapat ditentukan, variabel ini berisi string kosong.

SQL_DESC_SEARCHABLE [IRDs]
Bidang catatan SQLSMALLINT baca-saja ini diatur ke salah satu nilai berikut:

  • SQL_PRED_NONE jika kolom tidak dapat digunakan dalam klausa WHERE . (Ini sama dengan nilai SQL_UNSEARCHABLE dalam ODBC 2*.x*.)

  • SQL_PRED_CHAR apakah kolom dapat digunakan dalam klausa WHERE tetapi hanya dengan predikat LIKE . (Ini sama dengan nilai SQL_LIKE_ONLY dalam ODBC 2*.x*.)

  • SQL_PRED_BASIC apakah kolom dapat digunakan dalam klausa WHERE dengan semua operator perbandingan kecuali LIKE. (Ini sama dengan nilai SQL_EXCEPT_LIKE dalam ODBC 2*.x*.)

  • SQL_PRED_SEARCHABLE apakah kolom dapat digunakan dalam klausa WHERE dengan operator perbandingan apa pun.

SQL_DESC_TABLE_NAME [IRDs]
Bidang rekaman SQLCHAR * baca-saja ini berisi nama tabel dasar yang berisi kolom ini. Nilai yang dikembalikan bergantung pada driver jika kolom adalah ekspresi atau jika kolom adalah bagian dari tampilan.

SQL_DESC_TYPE [Semua]
Bidang catatan SQLSMALLINT ini menentukan jenis data SQL atau C ringkas untuk semua jenis data kecuali jenis data tanggalwaktu dan interval. Untuk jenis data tanggalwaktu dan interval, bidang ini menentukan jenis data verbose, yang SQL_DATETIME atau SQL_INTERVAL.

Setiap kali bidang ini berisi SQL_DATETIME atau SQL_INTERVAL, bidang SQL_DESC_DATETIME_INTERVAL_CODE harus berisi subkode yang sesuai untuk jenis ringkas. Untuk jenis data tanggalwaktu, SQL_DESC_TYPE berisi SQL_DATETIME, dan bidang SQL_DESC_DATETIME_INTERVAL_CODE berisi subkode untuk jenis data tanggalwaktu tertentu. Untuk jenis data interval, SQL_DESC_TYPE berisi SQL_INTERVAL dan bidang SQL_DESC_DATETIME_INTERVAL_CODE berisi subkode untuk jenis data interval tertentu.

Nilai dalam bidang SQL_DESC_TYPE dan SQL_DESC_CONCISE_TYPE saling bergantung. Setiap kali salah satu bidang diatur, bidang lainnya juga harus diatur. SQL_DESC_TYPE dapat diatur dengan panggilan ke SQLSetDescField atau SQLSetDescRec. SQL_DESC_CONCISE_TYPE dapat diatur dengan panggilan ke SQLBindCol atau SQLBindParameter, atau SQLSetDescField.

Jika SQL_DESC_TYPE diatur ke tipe data ringkas selain tipe data interval atau tanggalwaktu, bidang SQL_DESC_CONCISE_TYPE diatur ke nilai yang sama dan bidang SQL_DESC_DATETIME_INTERVAL_CODE diatur ke 0.

Jika SQL_DESC_TYPE diatur ke jenis data tanggalwaktu verbose atau interval (SQL_DATETIME atau SQL_INTERVAL) dan bidang SQL_DESC_DATETIME_INTERVAL_CODE diatur ke subkode yang sesuai, bidang tipe SQL_DESC_CONCISE diatur ke jenis ringkas yang sesuai. Mencoba mengatur SQL_DESC_TYPE ke salah satu tanggalwaktu ringkas atau jenis interval akan mengembalikan SQLSTATE HY021 (Informasi deskriptor yang tidak konsisten).

Saat bidang SQL_DESC_TYPE diatur oleh panggilan ke SQLBindCol, SQLBindParameter, atau SQLSetDescField, bidang berikut diatur ke nilai default berikut, seperti yang ditunjukkan pada tabel di bawah ini. Nilai bidang yang tersisa dari rekaman yang sama tidak terdefinisi.

Nilai SQL_DESC_TYPE Bidang lain secara implisit diatur
SQL_CHAR, SQL_VARCHAR, SQL_C_CHAR, SQL_C_VARCHAR SQL_DESC_LENGTH diatur ke 1. SQL_DESC_PRECISION diatur ke 0.
SQL_DATETIME Saat SQL_DESC_DATETIME_INTERVAL_CODE diatur ke SQL_CODE_DATE atau SQL_CODE_TIME, SQL_DESC_PRECISION diatur ke 0. Ketika diatur ke SQL_DESC_TIMESTAMP, SQL_DESC_PRECISION diatur ke 6.
SQL_DECIMAL, SQL_NUMERIC, SQL_C_NUMERIC SQL_DESC_SCALE diatur ke 0. SQL_DESC_PRECISION diatur ke presisi yang ditentukan implementasi untuk jenis data masing-masing.

Lihat SQL ke C: Numerik untuk informasi tentang cara mengikat nilai SQL_C_NUMERIC secara manual.
SQL_FLOAT, SQL_C_FLOAT SQL_DESC_PRECISION diatur ke presisi default yang ditentukan implementasi untuk SQL_FLOAT.
SQL_INTERVAL Saat SQL_DESC_DATETIME_INTERVAL_CODE diatur ke jenis data interval, SQL_DESC_DATETIME_INTERVAL_PRECISION diatur ke 2 (presisi terdepan interval default). Ketika interval memiliki komponen detik, SQL_DESC_PRECISION diatur ke 6 (presisi detik interval default).

Ketika aplikasi memanggil SQLSetDescField untuk mengatur bidang deskriptor daripada memanggil SQLSetDescRec, aplikasi harus terlebih dahulu mendeklarasikan jenis data. Jika ya, bidang lain yang ditunjukkan dalam tabel sebelumnya diatur secara implisit. Jika salah satu nilai yang ditetapkan secara implisit tidak dapat diterima, aplikasi kemudian dapat memanggil SQLSetDescField atau SQLSetDescRec untuk mengatur nilai yang tidak dapat diterima secara eksplisit.

SQL_DESC_TYPE_NAME [Deskriptor implementasi]
Bidang rekaman SQLCHAR * baca-saja ini berisi nama jenis yang bergantung pada sumber data (misalnya, "CHAR", "VARCHAR", dan sebagainya). Jika nama jenis data tidak diketahui, variabel ini berisi string kosong.

SQL_DESC_UNNAMED [Deskriptor implementasi]
Bidang catatan SQLSMALLINT ini dalam deskriptor baris diatur oleh driver ke SQL_NAMED atau SQL_UNNAMED saat mengatur bidang SQL_DESC_NAME. Jika bidang SQL_DESC_NAME berisi alias kolom atau jika alias kolom tidak berlaku, driver mengatur bidang SQL_DESC_UNNAMED ke SQL_NAMED. Jika aplikasi mengatur bidang SQL_DESC_NAME IPD ke nama parameter atau alias, driver mengatur bidang SQL_DESC_UNNAMED IPD ke SQL_NAMED. Jika tidak ada nama kolom atau alias kolom, driver mengatur bidang SQL_DESC_UNNAMED ke SQL_UNNAMED.

Aplikasi dapat mengatur bidang SQL_DESC_UNNAMED IPD ke SQL_UNNAMED. Driver mengembalikan SQLSTATE HY091 (Pengidentifikasi bidang deskriptor tidak valid) jika aplikasi mencoba mengatur bidang SQL_DESC_UNNAMED IPD ke SQL_NAMED. Bidang SQL_DESC_UNNAMED IRD bersifat baca-saja; SQLSTATE HY091 (Pengidentifikasi bidang deskriptor tidak valid) akan dikembalikan jika aplikasi mencoba mengaturnya.

SQL_DESC_UNSIGNED [Deskriptor implementasi]
Bidang catatan SQLSMALLINT baca-saja ini diatur ke SQL_TRUE jika tipe kolom tidak ditandatangani atau non-numerik, atau SQL_FALSE jika tipe kolom ditandatangani.

SQL_DESC_UPDATABLE [IRDs]
Bidang catatan SQLSMALLINT baca-saja ini diatur ke salah satu nilai berikut:

  • SQL_ATTR_READ_ONLY jika kolom tataan hasil bersifat baca-saja.

  • SQL_ATTR_WRITE jika kolom kumpulan hasil adalah baca-tulis.

  • SQL_ATTR_READWRITE_UNKNOWN jika tidak diketahui apakah kolom kumpulan hasil dapat diperbarui atau tidak.

SQL_DESC_UPDATABLE menjelaskan pembaruan kolom dalam tataan hasil, bukan kolom dalam tabel dasar. Pembaruan kolom dalam tabel dasar di mana kolom kumpulan hasil ini didasarkan mungkin berbeda dari nilai di bidang ini. Apakah kolom dapat diperbarui dapat didasarkan pada jenis data, hak istimewa pengguna, dan definisi kumpulan hasil itu sendiri. Jika tidak jelas apakah kolom dapat diperbarui, SQL_ATTR_READWRITE_UNKNOWN harus dikembalikan.

Pemeriksaan Konsistensi

Pemeriksaan konsistensi dilakukan oleh driver secara otomatis setiap kali aplikasi melewati nilai untuk bidang SQL_DESC_DATA_PTR ARD, APD, atau IPD. Jika salah satu bidang tidak konsisten dengan bidang lain, SQLSetDescField akan mengembalikan SQLSTATE HY021 (Informasi deskriptor yang tidak konsisten). Untuk informasi selengkapnya, lihat "Pemeriksaan Konsistensi" di SQLSetDescRec.

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

Lihat Juga

File Header ODBC
Referensi API ODBC