SQLSetDescField İşlevi

Uygunluk
Tanıtılan Sürüm: ODBC 3.0 Standartlarına Uyum: ISO 92

Özet
SQLSetDescField , tanımlayıcı kaydın tek bir alanının değerini belirler.

Syntax

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

Arguments

DescriptorHandle
[Giriş] Tanımlayıcı sapı.

RecNumber
[Giriş] Uygulamanın ayarlamak istediği alanı içeren tanımlayıcı kaydını gösterir. Tanımlayıcı kayıtlar 0'dan başlayarak numaralandırılır, kayıt numarası 0 yer imi kaydıdır. RecNumber argümanı başlık alanları için göz ardı edilir.

FieldIdentifier
[Giriş] Değeri belirlenecek tanımlayıcının alanını gösterir. Daha fazla bilgi için "Yorumlar" bölümünde "FieldIdentifier Argümanı"na bakınız.

Valueptr
[Giriş] Tanımlayıcı bilgiyi içeren bir tampona veya tam sayı değerine işaret eder. Veri türü, FieldIdentifier'ın değerine bağlıdır. Eğer ValuePtr tam sayı değerse, FieldIdentifier argümanının değerine bağlı olarak 8 bayt (SQLLEN), 4 bayt (SQLINTEGER) veya 2 bayt (SQLSMALLINT) olarak kabul edilebilir.

BufferLength
[Giriş] Eğer FieldIdentifier , ODBC tanımlı bir alan ise ve ValuePtr bir karakter dizisi veya ikili tampon işaret ediyorsa, bu argüman *ValuePtr'nin uzunluğu olmalıdır. Karakter dizisi verileri için, bu argüman dizide bayt sayısını içermelidir.

Eğer FieldIdentifier ODBC tanımlı bir alan ve ValuePtr bir tam sayıysa, BufferLength göz ardı edilir.

Eğer FieldIdentifier sürücü tanımlı bir alan ise, uygulama alanın doğasını BufferLength argümanını ayarlayarak Driver Manager'a bildirir. BufferLength aşağıdaki değerlere sahip olabilir:

  • Eğer ValuePtr bir karakter dizesine işaret eden bir işaret ise, BufferLength dizinin veya SQL_NTS'in uzunluğudur.

  • Eğer ValuePtr ikili bir tampona işaret ise, uygulama SQL_LEN_BINARY_ATTR(uzunluk) makrosunun sonucunu BufferLength'e yerleştirir. Bu, BufferLength içinde negatif bir değer verir.

  • Eğer ValuePtr, karakter dizisi veya ikili bir dizi dışında bir değere işaret ediyorsa, BufferLength SQL_IS_POINTER değerine sahip olmalıdır.

  • Eğer ValuePtr sabit uzunlukta bir değer içeriyorsa, BufferLength uygun şekilde ya SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT ya da SQL_IS_USMALLINT olur.

İadeler

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR veya SQL_INVALID_HANDLE.

Diagnostics

SQLSetDescField SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri SQLGetDiagRec çağrılarak SQL_HANDLE_DESC HandleType ve DescriptorHandleHandle ile elde edilebilir. Aşağıdaki tablo, SQLSetDescField tarafından sıkça duygulanan SQLSTATE değerlerini listeler ve her birini bu fonksiyonun bağlamında açıklar; "(DM)" gösterimi, Sürücü Yöneticisi tarafından döndürülen SQLSTATE açıklamalarından önce gelir. Aksi belirtilmediği sürece, her SQLSTATE değeriyle ilişkili dönüş kodu SQL_ERROR.

SQLSTATE Error Description
01000 Genel uyarı Sürücüye özgü bilgilendirici ileti. (İşlev SQL_SUCCESS_WITH_INFO döndürür.)
01S02 Seçenek değeri değiştirildi Sürücü, *ValuePtr'de belirtilen değeri ( eğer ValuePtr bir işaretçi ise) veya ValuePtr'deki değeri ( eğer ValuePtr tam sayı değerse) veya *ValuePtr uygulama çalışma koşulları nedeniyle geçersiz olduğundan, sürücü benzer bir değeri desteklemiyordu. (İşlev SQL_SUCCESS_WITH_INFO döndürür.)
07009 Geçersiz tanımlayıcı indeksi FieldIdentifier argümanı bir kayıt alanıydı, RecNumber argümanı 0 ve DescriptorHandle argümanı bir IPD tutamağı ifade ederdi.

RecNumber argümanı 0'dan küçüktü ve DescriptorHandle argümanı bir ARD veya APD'yi ifade ediyordu.

RecNumber argümanı, veri kaynağının destekleyebileceği maksimum sütun veya parametre sayısından büyüktü ve DescriptorHandle argümanı APD veya ARD'ye atıfta bulunuyordu.

(DM) FieldIdentifier argümanı SQL_DESC_COUNT ve *ValuePtr argümanı 0'dan küçüktü.

RecNumber argümanı 0'a eşitti ve DescriptorHandle argümanı örtük olarak tahsis edilmiş bir APD'ye atıfta bulunuyordu. (Bu hata, açıkça tahsis edilmiş bir uygulama tanımlayıcısında olmaz, çünkü açıkça tahsis edilen bir uygulama tanımlayıcısının APD mi ARD mi olduğu yürütme zamanına kadar bilinmez.)
08S01 İletişim bağlantısı hatası sürücü ile sürücünün bağlandığı veri kaynağı arasındaki iletişim bağlantısı, işlev işlenmeden önce başarısız oldu.
22001 Dize verileri, sağ kesilmiş FieldIdentifier argümanı SQL_DESC_NAME ve BufferLength argümanı SQL_MAX_IDENTIFIER_LEN'den büyük bir değerdi.
HY000 Genel hata Belirli bir SQLSTATE olmayan ve uygulamaya özgü SQLSTATE tanımlanmayan bir hata oluştu. *MessageText arabelleğinde SQLGetDiagRec tarafından döndürülen hata iletisi, hatayı ve nedenini açıklar.
HY001 Bellek ayırma hatası Sürücü, işlevin yürütülmesini veya tamamlanmasını desteklemek için gereken belleği ayıramadı.
HY010 İşlev dizisi hatası (DM) DescriptorHandle , asenkron olarak çalışan bir fonksiyonun çağrıldığı (bu değil) bir StatementHandle ile ilişkilendirilmişti ve bu fonksiyon çağrıldığında hâlâ çalışıyordu.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations veya SQLSetPos, DescriptorHandle'ın ilişkilendirildiği StatementHandle için çağrıldı ve SQL_NEED_DATA dönerdi. Bu işlev, tüm yürütme sırasında veri parametreleri veya sütunları için veri gönderilmeden önce çağrıldı.

(DM) DescriptorHandle ile ilişkilendirilen bağlantı kolu için asenkron olarak çalışan bir fonksiyon çağrılmıştır. Bu asenkron fonksiyon SQLSetDescField fonksiyonu çağrıldığında hâlâ çalışıyordu.

(DM) DescriptorHandle ile ilişkili özet tutamaçlarından biri için SQLExecute, SQLExecDirect veya SQLMoreResults çağrıldı ve SQL_PARAM_DATA_AVAILABLE dönerdi. Bu işlev, tüm akış parametreleri için veri alınmadan önce çağrıldı.
HY013 Bellek yönetimi hatası Büyük olasılıkla düşük bellek koşulları nedeniyle, temel alınan bellek nesnelerine erişilemediğinden işlev çağrısı işlenemedi.
HY016 Bir uygulama satır tanımlayıcısını değiştiremiyor DescriptorHandle argümanı bir IRD ile ilişkilendirilmişti ve FieldIdentifier argümanı SQL_DESC_ARRAY_STATUS_PTR veya SQL_DESC_ROWS_PROCESSED_PTR değildi.
HY021 Tutarsız tanımlayıcı bilgisi SQL_DESC_TYPE ve SQL_DESC_DATETIME_INTERVAL_CODE alanları, geçerli bir ODBC SQL tipi veya geçerli sürücüye özgü SQL tipi (IPD'ler için) veya geçerli bir ODBC C tipi (APD veya ARD'ler için) oluşturmaz.

Tutarlılık kontrolü sırasında kontrol edilen tanımlayıcı bilgileri tutarlı değildi. ( SQLSetDescRec'te "Consistency Check" bölümüne bakınız.)
HY090 Geçersiz dize veya arabellek uzunluğu (DM) *ValuePtr bir karakter dizisi ve BufferLength sıfırdan küçüktü ancak SQL_NTS'ye eşit değildi.

(DM) Sürücü bir ODBC 2*.x* sürücüydü, tanımlayıcı bir ARD idi, ColumnNumber argümanı 0 olarak ayarlanmıştı ve BufferLength argümanı için belirtilen değer 4'e eşit değildi.
HY091 Geçersiz tanımlayıcı alan tanımlayıcısı FieldIdentifier argümanı için belirtilen değer, ODBC tanımlı bir alan değildi ve uygulama tanımlı bir değer de değildi.

FieldIdentifier argümanı, DescriptorHandle argümanı için geçersizdi.

FieldIdentifier argümanı, sadece okunabilir, ODBC tanımlı bir alandı.
HY092 Geçersiz öznitelik/seçenek tanımlayıcısı *ValuePtr değeri FieldIdentifier argümanı için geçerli değildi.

FieldIdentifier argümanı SQL_DESC_UNNAMED, ValuePtr ise SQL_NAMED.
HY105 Geçersiz parametre türü (DM) SQL_DESC_PARAMETER_TYPE alanı için belirtilen değer geçersizdi. (Daha fazla bilgi için SQLBindParameter'daki "InputOutputType Argümanı" bölümüne bakınız.)
HY117 Bilinmeyen işlem durumu nedeniyle bağlantı askıya alındı. Yalnızca bağlantıyı kesme ve salt okunur işlevlere izin verilir. (DM) Askıya alınmış durum hakkında daha fazla bilgi için ODBC 3.8'de Yenilikler Nelerdir sayfasına bakınız.
HYT01 Bağlantı zaman aşımı süresi doldu Veri kaynağı isteği yanıtlamadan önce bağlantı zaman aşımı süresi doldu. Bağlantı zaman aşımı süresi SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT aracılığıyla ayarlanır.
IM001 Sürücü bu işlevi desteklemiyor (DM) DescriptorHandle ile ilişkili sürücü bu fonksiyonu desteklemez.

Comments

Bir uygulama, herhangi bir tanımlayıcı alanını tek tek ayarlamak için SQLSetDescField çağırabilir. SQLSetDescField'a yapılan bir çağrı, tek bir tanımlayıcıda tek bir alan ayarlar. Bu fonksiyon, alan ayarlanabildiği sürece herhangi bir tanımlayıcı tipinde herhangi bir alanı ayarlamak için çağrılabilir. (Bu bölümün ilerleyen bölümlerinde tabloya bakınız.)

Note

SQLSetDescField çağrısı başarısız olursa, RecNumber argümanı tarafından tanımlanan tanımlayıcı kaydının içeriği tanımlanmamıştır.

Diğer fonksiyonlar, birden fazla tanımlayıcı alanı tek bir fonksiyon çağrısıyla ayarlamak için çağrılabilir. SQLSetDescRec fonksiyonu, veri tipini ve tampon tamponu ile bir sütun veya parametreye bağlı olan çeşitli alanları ayarlar (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 ve SQL_DESC_INDICATOR_PTR alanları). SQLBindCol veya SQLBindParameter ile bir sütunun veya parametrenin bağlanması için tam bir spesifikasyon oluşturulabilir. Bu fonksiyonlar, belirli bir tanımlayıcı alanı grubunu tek bir fonksiyon çağrısı ile ayarlar.

SQLSetDescField , bağlama işaretlerine (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR veya SQL_DESC_OCTET_LENGTH_PTR) bir ofset ekleyerek bağlama tamponlarını değiştirmek için çağrılabilir. Bu, SQLBindCol veya SQLBindParameter çağrılmadan bağlama tamponlarını değiştirir; bu da uygulamanın SQL_DESC_DATA_TYPE gibi diğer alanları değiştirmeden SQL_DESC_DATA_PTR değiştirmesini sağlar.

Bir uygulama SQLSetDescField çağırarak SQL_DESC_COUNT veya ertelenmiş alanlar dışında herhangi bir alanı SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR veya SQL_DESC_INDICATOR_PTR ayarlarsa, kayıt bağlanmamış hale gelir.

Tanımlayıcı başlık alanları, uygun FieldIdentifierile SQLSetDescField çağrılarak ayarlanır. Birçok başlık alanı aynı zamanda ifade özniteliğidir, bu yüzden SQLSetStmtAttr çağrısıyla da ayarlanabilirler. Bu, uygulamaların önce tanımlayıcı tutacağı almadan tanımlayıcı alanı ayarlamasına olanak tanır. SQLSetDescField başlık alanı ayarlamak için çağrıldığında, RecNumber argümanı göz ardı edilir.

0 RecNumber ile yer imimi alanları ayarlanır.

Note

Bildirim özetniteliği SQL_ATTR_USE_BOOKMARKS her zaman SQLSetDescField çağrılmadan önce ayarlanmalıdır. Bu zorunlu olmasa da, şiddetle tavsiye edilir.

Ayar Tanımlayıcı Alanlarının Dizisi

SQLSetDescField çağrılarak tanımlayıcı alanları ayarlandığında, uygulama belirli bir diziyi takip etmelidir:

  1. Başvuru önce SQL_DESC_TYPE, SQL_DESC_CONCISE_TYPE veya SQL_DESC_DATETIME_INTERVAL_CODE alanını belirlemelidir.

  2. Bu alanlardan biri ayarlandıktan sonra, uygulama bir veri türünün bir özniteliğini ayarlayabilir ve sürücü, veri tipi atribük alanlarını veri tipi için uygun varsayılan değerlere ayarlar. Tip öznitelik alanlarının otomatik olarak varsayılan olarak belirlenmesi, uygulama bir veri tipi belirledikten sonra tanımlayıcının her zaman kullanıma hazır olmasını sağlar. Uygulama açıkça bir veri tipi özniteliği belirliyorsa, varsayılan özniteliği geçersiz kalıyor.

  3. Adım 1'de listelenen alanlardan biri ayarlandıktan ve veri tipi özellikleri belirlendikten sonra, uygulama SQL_DESC_DATA_PTR ayarlar. Bu, tanımlayıcı alanların tutarlılık kontrolü yapılmasını sağlar. Uygulama, SQL_DESC_DATA_PTR alanını ayarladıktan sonra veri tipini veya niteliklerini değiştirirse, sürücü SQL_DESC_DATA_PTR'yi bir null işaretçiye atar ve kaydı bağlamayı kaldırır. Bu, tanımlayıcı kaydı kullanılabilmeden önce uygulamanın doğru adımları sırayla tamamlamasını zorunlu kılar.

Tanımlayıcı Alanlarını Başlatma

Bir tanımlayıcı tahsis edildiğinde, tanımlayıcıdaki alanlar varsayılan bir değere başlatılabilir, varsayılan değer olmadan başlatılabilir veya tanımlayıcı türü için tanımlanmamış olabilir. Aşağıdaki tablolar, her tanımlayıcı türü için her alanın başlatılmasını gösterir; "D" alanın varsayılan olarak başlatıldığını, "ND" ise alanın varsayılan olmadan başlatıldığını gösterir. Bir sayı gösteriliyorsa, alanın varsayılan değeri o sayıdır. Tablolar ayrıca bir alanın okunma/yazma (R/W) veya sadece okunabilir (R) olup olmadığını gösterir.

IRD alanları, yalnızca ifade hazırlanıp yürütüldükten ve IRD doldurulduktan sonra varsayılan değere sahiptir, ifade tutucu veya tanımlayıcı tahsis edildiğinde değil. IRD doldurulana kadar, bir IRD alanına erişim sağlamaya yönelik herhangi bir girişim hata verecektir.

Bazı tanımlayıcı alanları, tanımlayıcı tiplerin (ARD'ler ve IRD'ler, APD'ler ve IPD'ler) bir veya daha fazlası için tanımlanır, ancak hepsi için değil. Bir tanımlayıcı türü için bir alan tanımlanmadığında, o tanımlayıcıyı kullanan hiçbir fonksiyon tarafından buna ihtiyaç duyulmaz.

SQLGetDescField tarafından erişilebilen alanlar, SQLSetDescField tarafından mutlaka ayarlanamaz. SQLSetDescField tarafından ayarlanabilen alanlar aşağıdaki tablolarda listelenmiştir.

Başlık alanlarının başlatılması aşağıdaki tabloda belirtilmiştir.

Başlık alanı adı Türü R/W Varsayılan
SQL_DESC_ALLOC_TYPE SQLSMALLINT ARD: R APD: R IRD: R IPD: R ARD: SQL_DESC_ALLOC_AUTO örtük için, SQL_DESC_ALLOC_USER açık için

APD: SQL_DESC_ALLOC_AUTO örtük için, SQL_DESC_ALLOC_USER açık için

IRD: SQL_DESC_ALLOC_AUTO

IPD: SQL_DESC_ALLOC_AUTO
SQL_DESC_ARRAY_SIZE SQLULEN ARD: R/W APD: R/W IRD: Kullanılmayan IPD: Kullanılmayan ARD:[1] APD:[1] IRD: Kullanılmayan IPD: Kullanılmayan
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: Kullanılmayan IPD: Kullanılmayan ARD: Null ptr APD: Null ptr IRD: Kullanılmayan IPD: Kullanılmayan
SQL_DESC_BIND_TYPE SQLINTEGER ARD: R/W APD: R/W IRD: Kullanılmayan IPD: Kullanılmayan ARD: SQL_BIND_BY_COLUMN

APD: SQL_BIND_BY_COLUMN

IRD: Kullanılmamış

IPD: Kullanılmamış
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: Kullanılmayan APD: Kullanılmayan IRD: R/W IPD: R/W ARD: Kullanılmayan APD: Kullanılmayan IRD: Null ptr IPD: Null ptr

[1] Bu alanlar yalnızca IPD sürücü tarafından otomatik olarak doldurulduğunda tanımlanır. Aksi takdirde tanımlanmamıştır. Bir uygulama bu alanları ayarlamaya çalışırsa, SQLSTATE HY091 (Geçersiz tanımlayıcı alanı tanımlayıcısı) döner.

Kayıt alanlarının başlangıllaştırması aşağıdaki tabloda gösterildiği gibidir.

Kayıt alanı adı Türü R/W Varsayılan
SQL_DESC_AUTO_UNIQUE_VALUE SQLINTEGER ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_BASE_COLUMN_NAME SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_BASE_TABLE_NAME SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_DOSYA_DUYARLILIĞI SQLINTEGER ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: R ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: D[1]
SQL_DESC_CATALOG_NAME (Katalog Adı Tanımlayıcısı) SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_KISA_TİP 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_DATA_PTR SQLPOINTER ARD: R/W APD: R/W IRD: Kullanılmayan IPD: Kullanılmayan ARD: Null ptr APD: Null ptr IRD: Kullanılmayan IPD: Kullanılmamış[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: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_FIXED_PREC_SCALE SQLSMALLINT ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: R ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: D[1]
SQL_DESC_INDICATOR_PTR SQLLEN * ARD: R/W APD: R/W IRD: Kullanılmayan IPD: Kullanılmayan ARD: Null ptr APD: Null ptr IRD: Kullanılmayan IPD: Kullanılmayan
SQL_DESC_LABEL SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
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: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_LITERAL_SUFFIX SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_LOCAL_TYPE_NAME SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: R ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: D[1]
SQL_DESC_NAME SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NULLABLE (SQL Tanımlayıcı Boş Olabilirliği) SQLSMALLINT ARD: Kullanılmayan APD: Kullanılmayan IRD: 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: Kullanılmayan IPD: Kullanılmayan ARD: Null ptr APD: Null ptr IRD: Kullanılmayan IPD: Kullanılmayan
SQL_DESC_PARAMETER_TYPE SQLSMALLINT ARD: Kullanılmayan APD: Kullanılmayan IRD: Kullanılmayan IPD: R/W ARD: Kullanılmayan APD: Kullanılmayan IRD: Kullanılmayan IPD: 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: Kullanılmamış

APD: Kullanılmamış

IRD: R

IPD: R
ARD: Kullanılmamış

APD: Kullanılmamış

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_ŞEMA_ADI SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_SEARCHABLE SQLSMALLINT ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
SQL_DESC_TABLE_NAME SQLCHAR * ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan
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: Kullanılmayan APD: Kullanılmayan IRD: R IPD: R ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: D[1]
SQL_DESC_UNNAMED SQLSMALLINT ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_UNSIGNED SQLSMALLINT ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: R ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: D[1]
SQL_DESC_UPDATABLE SQLSMALLINT ARD: Kullanılmayan APD: Kullanılmayan IRD: R IPD: Kullanılmayan ARD: Kullanılmayan APD: Kullanılmayan IRD: D IPD: Kullanılmayan

[1] Bu alanlar yalnızca IPD sürücü tarafından otomatik olarak doldurulduğunda tanımlanır. Aksi takdirde tanımlanmamıştır. Bir uygulama bu alanları ayarlamaya çalışırsa, SQLSTATE HY091 (Geçersiz tanımlayıcı alanı tanımlayıcısı) döner.

[2] IPD'deki SQL_DESC_DATA_PTR alanı, tutarlılık kontrolü zorunlu kılacak şekilde ayarlanabilir. Sonraki bir çağrıda SQLGetDescField veya SQLGetDescRec, sürücünün SQL_DESC_DATA_PTR ayarlandığı değeri döndürmesi gerekmez.

FieldIdentifier Argümanı

FieldIdentifier argümanı, ayarlanacak tanımlayıcı alanı gösterir. Bir tanımlayıcı, bir sonraki bölüm olan "Başlık Alanları"nda tanımlanan başlık alanlarından oluşan tanımlayıcı başlığını ve sıfır veya daha fazla tanımlayıcı kayıtlarını içeren " Başlık Alanları" bölümündeki bölümde tanımlanan kayıt alanlarını içerir.

Başlık Alanları

Her tanımlayıcının aşağıdaki alanlardan oluşan bir başlığı vardır:

SQL_DESC_ALLOC_TYPE [Hepsi]
Bu yalnızca okunabilir SQLSMALLINT başlık alanı, tanımlayıcının sürücü tarafından otomatik olarak mı yoksa uygulama tarafından mı açıkça tahsis edildiğini belirtir. Uygulama bu alanı elde edebilir, ancak değiştiremez. Eğer tanımlayıcı sürücü tarafından otomatik olarak tahsis edildiyse, alan sürücü tarafından SQL_DESC_ALLOC_AUTO olarak ayarlanır. Tanımlayıcı uygulama tarafından açıkça tahsis edildiyse, sürücü tarafından SQL_DESC_ALLOC_USER olarak ayarlanır.

SQL_DESC_ARRAY_SIZE [Uygulama tanımlayıcıları]
ARD'lerde, bu SQLULEN başlık alanı satır kümesindeki satır sayısını belirtir. Bu, SQLFetch veya SQLFetchScroll çağrısıyla geri dönecek veya SQLBulkOperations veya SQLSetPos çağrısıyla işletilecek satır sayısıdır.

APD'lerde, bu SQLULEN başlık alanı her parametre için değer sayısını belirtir.

Bu alanın varsayılan değeri 1'dir. Eğer SQL_DESC_ARRAY_SIZE 1'den büyükse, APD veya ARD'nin SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR ve SQL_DESC_OCTET_LENGTH_PTR'i dizilere işaret eder. Her dizinin kardinalitesi bu alanın değerine eşittir.

ARD'deki bu alan, SQL_ATTR_ROW_ARRAY_SIZE özniteliğine sahip SQLSetStmtAttr çağrılarak da ayarlanabilir. APD'deki bu alan, SQL_ATTR_PARAMSET_SIZE özniteliğine sahip SQLSetStmtAttr çağrılarak da ayarlanabilir.

SQL_DESC_ARRAY_STATUS_PTR [Hepsi]
Her tanımlayıcı tipi için, bu SQLUSMALLINT * başlık alanı SQLUSMALLINT değerlerinden oluşan bir diziyi gösterir. Bu diziler şu şekilde adlandırılır: satır durum dizisi (IRD), parametre durum dizisi (IPD), satır işlem dizisi (ARD) ve parametre işlem dizisi (APD).

IRD'de bu başlık alanı, SQLBulkOperations, SQLFetch, SQLFetchScroll veya SQLSetPos çağrısından sonra durum değerlerini içeren bir satır durum dizisine işaret eder. Dizide, satır setindeki satır sayısı kadar çok öğeye sahiptir. Uygulama, bir SQLUSMALLINT dizisi tahsis etmeli ve bu alanı diziyi gösterecek şekilde ayarlamalıdır. Alan varsayılan olarak null işaretçiye ayarlanmıştır. Sürücü diziyi doldurur - SQL_DESC_ARRAY_STATUS_PTR alanı null işaretçi olarak ayarlanmadıkça, bu durumda durum değerleri üretilmez ve dizi doldurulmaz.

Caution

Sürücü davranışı, IRD'nin SQL_DESC_ARRAY_STATUS_PTR alanı tarafından işaretlenen satır durum dizisinin elemanlarını belirlemişse tanımlanmaz.

Dizi başlangıçta SQLBulkOperations, SQLFetch, SQLFetchScroll veya SQLSetPos çağrısıyla doldurulur. Çağrı SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO döndürmediyse, bu alanla işaretlenen dizinin içeriği tanımlanmaz. Dizinin içindeki elemanlar aşağıdaki değerleri içerebilir:

  • SQL_ROW_SUCCESS: Sıra başarıyla getirildi ve son getirildiğinden beri değişmedi.

  • SQL_ROW_SUCCESS_WITH_INFO: Sıra başarıyla getirildi ve son getirildiğinden beri değişmedi. Ancak, satıra dair bir uyarı verildi.

  • SQL_ROW_ERROR: Sırayı getirirken bir hata oldu.

  • SQL_ROW_UPDATED: Sıra başarıyla alındı ve son getirildiğinden beri güncellendi. Satır tekrar alınırsa, durumu SQL_ROW_SUCCESS.

  • SQL_ROW_DELETED: Sıra, son getirildiğinden beri silinmiş.

  • SQL_ROW_ADDED: Satır, SQLBulkOperations tarafından eklendi. Satır tekrar alınırsa, durumu SQL_ROW_SUCCESS.

  • SQL_ROW_NOROW: Satır kümesi, sonuç kümesinin sonuyla örtüşüyordu ve bu satır durum dizisinin bu elemanına karşılık gelen bir satır döndürülmedi.

IRD'deki bu alan, SQL_ATTR_ROW_STATUS_PTR özniteliğine sahip SQLSetStmtAttr çağrılarak da ayarlanabilir.

IRD'nin SQL_DESC_ARRAY_STATUS_PTR alanı ancak SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO iade edildikten sonra geçerlidir. Eğer dönüş kodu bunlardan biri değilse, SQL_DESC_ROWS_PROCESSED_PTR tarafından işaret edilen konum tanımlanmamıştır.

IPD'de bu başlık alanı, SQLExecute veya SQLExecDirect çağrısından sonra her parametre değeri kümesi için durum bilgisi içeren bir parametre durum dizisine işaret eder. Eğer SQLExecute veya SQLExecDirect çağrısı SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO döndürmediyse, bu alanla işaretlenen dizinin içeriği tanımlanmamıştır. Uygulama, bir SQLUSMALLINT dizisi tahsis etmeli ve bu alanı diziyi gösterecek şekilde ayarlamalıdır. Sürücü diziyi doldurur - SQL_DESC_ARRAY_STATUS_PTR alanı null işaretçi olarak ayarlanmadıkça, bu durumda durum değerleri üretilmez ve dizi doldurulmaz. Dizinin içindeki elemanlar aşağıdaki değerleri içerebilir:

  • SQL_PARAM_SUCCESS: SQL ifadesi bu parametre seti için başarıyla çalıştırıldı.

  • SQL_PARAM_SUCCESS_WITH_INFO: SQL ifadesi bu parametre seti için başarıyla çalıştırıldı; Ancak, uyarı bilgileri tanı veri yapısında mevcuttur.

  • SQL_PARAM_ERROR: Bu parametre seti işlenirken bir hata meydana geldi. Ek hata bilgisi tanı veri yapısında mevcuttur.

  • SQL_PARAM_UNUSED: Bu parametre kümesi kullanılmadı; muhtemelen önceki bazı parametre kümelerinin daha fazla işlemeyi durduran bir hata yaratması ya da APD'nin SQL_DESC_ARRAY_STATUS_PTR alanı tarafından belirtilen dizideki o parametre seti için SQL_PARAM_IGNORE ayarlanmış olması nedeniyle.

  • SQL_PARAM_DIAG_UNAVAILABLE: Tanı bilgisi mevcut değildir. Buna bir örnek, sürücünün parametre dizilerini monolitik bir birim olarak ele alıp bu seviyede hata bilgisi üretmemesi örneğidir.

IPD'deki bu alan, SQL_ATTR_PARAM_STATUS_PTR özniteliğine sahip SQLSetStmtAttr çağrılarak da ayarlanabilir.

ARD'de, bu başlık alanı, uygulama tarafından ayarlanabilecek bir satır işlem dizisine işaret eder; bu satırın SQLSetPos işlemleri için göz ardı edilip edilmeyeceğini belirtir. Dizinin içindeki elemanlar aşağıdaki değerleri içerebilir:

  • SQL_ROW_PROCEED: Satır, SQLSetPos kullanılarak toplu işleme dahil edilir. (Bu ayar, işlemin satırda gerçekleşeceğini garanti etmez. Eğer satırın IRD satır durum dizisinde SQL_ROW_ERROR durumu varsa, sürücü bu işlemi sırada gerçekleştiremeyebilir.)

  • SQL_ROW_IGNORE: Satır SQLSetPos kullanılarak toplu işlemden dışlanır.

Dizinin hiçbir elemanı ayarlanmadıysa, tüm satırlar toplu işleme dahil edilir. ARD'nin SQL_DESC_ARRAY_STATUS_PTR alanındaki değer bir null işaretçi ise, tüm satırlar toplu işleme dahil edilir; yorum, işaretçinin geçerli bir diziyi işaret ettiği ve dizinin tüm elemanlarının SQL_ROW_PROCEED olduğu gibi aynıdır. Eğer dizideki bir eleman SQL_ROW_IGNORE olarak ayarlanırsa, göz ardı edilen satırın satır durum dizisinde değer değişmez.

ARD'deki bu alan, SQL_ATTR_ROW_OPERATION_PTR özniteliğiyle SQLSetStmtAttr çağrılarak da ayarlanabilir.

APD'de bu başlık alanı, uygulama tarafından ayarlanabilecek bir parametre işlem dizisine işaret eder; bu parametre kümesi SQLExecute veya SQLExecDirect çağrıldığında göz ardı edilip edilmeyeceğini gösterir. Dizinin içindeki elemanlar aşağıdaki değerleri içerebilir:

  • SQL_PARAM_PROCEED: Parametre kümesi, SQLExecute veya SQLExecDirect çağrısına dahil edilmiştir.

  • SQL_PARAM_IGNORE: Parametre kümesi SQLExecute veya SQLExecDirect çağrısından dışlanır.

Eğer dizinin hiçbir elemanı ayarlanmadıysa, dizinin tüm parametre kümeleri SQLExecute veya SQLExecDirect çağrılarında kullanılır. APD'nin SQL_DESC_ARRAY_STATUS_PTR alanındaki değer bir null işaretçi ise, tüm parametre kümeleri kullanılır; yorum, işaretçinin geçerli bir diziyi işaret ettiği ve dizinin tüm elemanlarının SQL_PARAM_PROCEED olduğu gibi aynıdır.

APD'deki bu alan, SQL_ATTR_PARAM_OPERATION_PTR özniteliğine sahip SQLSetStmtAttr çağrılarak da ayarlanabilir.

SQL_DESC_BIND_OFFSET_PTR [Uygulama tanımlayıcıları]
Bu SQLLEN * başlık alanı bağlama ofsetine işaret eder. Varsayılan olarak null işaretçiye ayarlanmıştır. Eğer bu alan null işaretçi değilse, sürücü işaretçiyi referanstan çıkarır ve tanımlayıcı kaydında null olmayan değeri olan her bir ertelenmiş alana (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR ve SQL_DESC_OCTET_LENGTH_PTR) gönderme zamanında ekler ve bağlama sırasında yeni işaretçi değerlerini kullanır.

Bağlama ofseti her zaman doğrudan SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR ve SQL_DESC_OCTET_LENGTH_PTR alanlarındaki değerlere eklenir. Eğer ofset farklı bir değere değiştirilirse, yeni değer yine de her tanımlayıcı alanındaki değere doğrudan eklenir. Yeni ofset, alan değeri ve önceki ofsetlere eklenmez.

Bu alan ertelenen bir alandır: Ayarlandığı anda kullanılmaz, ancak sürücü tarafından veri tamponları için adresleri belirlemesi gerektiğinde daha sonra kullanılır.

ARD'deki bu alan, SQL_ATTR_ROW_BIND_OFFSET_PTR özniteliğine sahip SQLSetStmtAttr çağrılarak da ayarlanabilir. ARD'deki bu alan, SQL_ATTR_PARAM_BIND_OFFSET_PTR özniteliğine sahip SQLSetStmtAttr çağrılarak da ayarlanabilir.

Daha fazla bilgi için SQLFetchScroll ve SQLBindParameter'deki satır bazında bağlamanın açıklamasına bakınız.

SQL_DESC_BIND_TYPE [Uygulama tanımlayıcıları]
Bu SQLUINTEGER başlık alanı, sütunları veya parametreleri bağlamak için kullanılacak bağlama yönünü belirler.

ARD'lerde, bu alan ilgili ifade tutamacında SQLFetchScroll veya SQLFetch çağrıldığında bağlama yönelimini belirler.

Sütunlar için sütun bazında bağlama seçmek için bu alan SQL_BIND_BY_COLUMN (varsayılan) olarak ayarlanmıştır.

ARD'deki bu alan, SQL_ATTR_ROW_BIND_TYPE Özniteliğiile SQLSetStmtAttr çağrılarak da ayarlanabilir.

APD'lerde bu alan, dinamik parametreler için kullanılacak bağlama yönünü belirler.

Parametreler için sütun bazında bağlama seçmek için bu alan SQL_BIND_BY_COLUMN olarak ayarlanır (varsayılan olarak).

APD'deki bu alan, SQL_ATTR_PARAM_BIND_TYPE Özniteliğiile SQLSetStmtAttr çağrılarak da ayarlanabilir.

SQL_DESC_COUNT [Hepsi]
Bu SQLSMALLINT başlık alanı, veri içeren en yüksek numaralı kaydın 1 tabanlı indeksini belirtir. Sürücü, tanımlayıcı için veri yapısını ayarlarken, kaç kayıt önemli olduğunu göstermek için SQL_DESC_COUNT alanını da ayarlamalıdır. Bir uygulama bu veri yapısının bir örneğini tahsis ettiğinde, kaç kayıt için yer ayıracağını belirtmek zorunda değildir. Uygulama kayıtların içeriğini belirledikçe, sürücü tanımlayıcı tutamacının yeterli boyutta bir veri yapısına atıfta bulunmasını sağlamak için gerekli işlemleri yapar.

SQL_DESC_COUNT, alan bir ARD'deyse, bağlı olan tüm veri sütunlarının veya APD'de olan tüm parametrelerin sayısı değil, en yüksek numaralı kaydın sayısıdır. En yüksek numaralı sütun veya parametre sınırsızsa, SQL_DESC_COUNT bir sonraki en yüksek numaralı sütun veya parametrenin numarasına dönüşür. En yüksek numaralı sütunun sayısından küçük bir sütun veya parametre sınırsız olursa (TargetValuePtr argümanı null işaretçi olarak ayarlanmış SQLBindCol veya ParameterValuePtr argümanı null işaretçi olarak ayarlanmış SQLBindParameter çağrılarsa), SQL_DESC_COUNT değişmez. Ek sütunlar veya parametreler, veri içeren en yüksek numaralı kayıttan daha büyük sayılarla sınırlandırılırsa, sürücü SQL_DESC_COUNT alanındaki değeri otomatik olarak artırır. Eğer tüm sütunlar SQLFreeStmt çağrılıp SQL_UNBIND seçeneğiyle bağlanmazsa, ARD ve IRD'deki SQL_DESC_COUNT alan 0 olarak ayarlanır. Eğer SQLFreeStmt SQL_RESET_PARAMS seçeneğiyle çağrılırsa, APD ve IPD'deki SQL_DESC_COUNT alanları 0 olarak ayarlanır.

SQL_DESC_COUNT değeri, bir uygulama tarafından SQLSetDescField çağrısı ile açıkça ayarlanabilir. Eğer SQL_DESC_COUNT'daki değer açıkça azaltılırsa, SQL_DESC_COUNT'deki yeni değerden büyük sayıya sahip tüm kayıtlar fiilen kaldırılır. Eğer SQL_DESC_COUNT'daki değer açıkça 0'a ayarlanmışsa ve alan bir ARD'deyse, bağlı yer imimi sütunu hariç tüm veri tamponları serbest bırakılır.

ARD'nin bu alanındaki kayıt sayısı, bağlı yer imi sütunu içermez. Bir yer imi sütununu bağlamanın tek yolu, SQL_DESC_DATA_PTR alanını null işaretçiye ayarlamaktır.

SQL_DESC_ROWS_PROCESSED_PTR [Uygulama tanımlayıcıları]
Bir IRD'de, bu SQLULEN * başlık alanı, SQLFetch veya SQLFetchScroll çağrısından sonra alınan satır sayısını veya SQLBulkOperations veya SQLSetPos çağrısının gerçekleştirdiği toplu işlemde etkilenen satır sayısını, hata satırları dahil olmak üzere, gösterir.

Bir IPD'de, bu SQLUINTEGER * başlık alanı, hata kümeleri dahil olmak üzere işlenmiş parametre kümelerini içeren bir tampona işaret eder. Bu null işaretçiyse hiçbir sayı geri dönmez.

SQL_DESC_ROWS_PROCESSED_PTR yalnızca SQLFetch veya SQLFetchScroll (bir IRD alanı için) veya SQLExecute, SQLExecDirect veya SQLParamData (bir IPD alanı için) çağrısı sonrası SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO geri döndükten sonra geçerlidir. Bu alanla işaretlenen tamponu dolduran çağrı SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO döndürmezse, tamponun içeriği tanımsız olur, ancak SQL_NO_DATA döndürmezse ve bu durumda tampondaki değer 0 olarak ayarlanır.

ARD'deki bu alan, SQL_ATTR_ROWS_FETCHED_PTR özniteliğiyle SQLSetStmtAttr çağrılarak da ayarlanabilir. APD'deki bu alan, SQL_ATTR_PARAMS_PROCESSED_PTR özniteliğine sahip SQLSetStmtAttr çağrılarak da ayarlanabilir.

Bu alanın işaret ettiği tampon, uygulama tarafından tahsis edilir. Bu, sürücü tarafından belirlenen ertelenmiş bir çıkış tamponudur. Varsayılan olarak null işaretçiye ayarlanmıştır.

Rekor Sahaları

Her tanımlayıcı, tanımlayıcı türüne bağlı olarak sütun verisi veya dinamik parametreleri tanımlayan alanlardan oluşan bir veya daha fazla kayıt içerir. Her kayıt, tek bir sütun veya parametrenin tam tanımıdır.

SQL_DESC_AUTO_UNIQUE_VALUE [IRD'ler]
Bu yalnızca okunabilir SQLINTEGER kayıt alanı, sütunun otomatik artan bir sütun olup olmadığını veya sütunun otomatik artırılan sütun olmadığını SQL_TRUE SQL_FALSE şekilde içerir. Bu alan yalnızca okunabilir, ancak altta yatan otomatik artıran sütun mutlaka sadece okunabilir değildir.

SQL_DESC_BASE_COLUMN_NAME [IRD'ler]
Bu yalnızca okunabilir SQLCHAR * kayıt alanı, sonuç kümesi sütununun temel sütun adını içerir. Eğer bir temel sütun adı yoksa (örneğin ifade olan sütunlarda), bu değişken boş bir dizi içerir.

SQL_DESC_BASE_TABLE_NAME [IRD'ler]
Bu yalnızca okunabilir SQLCHAR * kayıt alanı, sonuç kümesi sütununun temel tablo adını içerir. Bir temel tablo adı tanımlanamazsa veya uygulanamazsa, bu değişken boş bir dizi içerir.

SQL_DESC_CASE_SENSITIVE [Uygulama tanımlayıcıları]
Bu yalnızca okunabilir SQLINTEGER kayıt alanı, sütun veya parametrenin derlemeler ve karşılaştırmalar için büyük harf duyarlı olarak kabul edilmediği, SQL_FALSE sütunun derleme ve karşılaştırmalar için büyük harf duyarlı olmadığı veya karakter dışı bir sütun olduğu SQL_TRUE içerir.

SQL_DESC_CATALOG_NAME [IRD'ler]
Bu yalnızca okunabilir SQLCHAR * kayıt alanı, sütunu içeren temel tablo kataloğunu içerir. Dönüş değeri, sütun bir ifade ise veya sütun bir görünümün parçasa sürücüye bağlıdır. Veri kaynağı katalogları desteklemiyorsa veya katalog belirlenemiyorsa, bu değişken boş bir dizi içerir.

SQL_DESC_CONCISE_TYPE [Hepsi]
Bu SQLSMALLINT başlık alanı, tarih, zaman ve aralık veri türleri dahil olmak üzere tüm veri türleri için kısa veri tipini belirtir.

SQL_DESC_CONCISE_TYPE, SQL_DESC_TYPE ve SQL_DESC_DATETIME_INTERVAL_CODE alanlarındaki değerler birbirine bağımlıdır. Her bir alan ayarlandığında, diğeri de ayarlanmalıdır. SQL_DESC_CONCISE_TYPE, SQLBindCol veya SQLBindParameter veya SQLSetDescField çağrısıyla ayarlanabilir. SQL_DESC_TYPE, SQLSetDescField veya SQLSetDescRec çağrısıyla ayarlanabilir.

Eğer SQL_DESC_CONCISE_TYPE, aralık veya tarih saati veri tipi dışında kısa bir veri türüne ayarlanmışsa, SQL_DESC_TYPE alanı aynı değere ayarlanır ve SQL_DESC_DATETIME_INTERVAL_CODE alanı 0 olarak ayarlanır.

Eğer SQL_DESC_CONCISE_TYPE kısa tarih saati veya aralık veri tipine ayarlanmışsa, SQL_DESC_TYPE alanı karşılık gelen verbose tipine (SQL_DATETIME veya SQL_INTERVAL) ve SQL_DESC_DATETIME_INTERVAL_CODE alanı uygun alt kod olarak ayarlanır.

SQL_DESC_DATA_PTR [Uygulama tanımlayıcıları ve IPD'ler]
Bu SQLPOINTER kayıt alanı, APD'ler için parametre değerini veya ARD'ler için sütun değerini içeren bir değişkene işaret eder. Bu alan ertelenmiş bir alandır. Ayarlandığı anda kullanılmaz, ancak sürücü tarafından veri almak için daha sonra kullanılır.

ARD'nin SQL_DESC_DATA_PTR alanı tarafından belirtilen sütun, SQLBindCol çağrısındaki TargetValuePtr argümanı null işaretçi ise veya ARD'deki SQL_DESC_DATA_PTR alanı SQLSetDescField veya SQLSetDescRec çağrısıyla null işaretçiye ayarlanmışsa bağlanmazdır. SQL_DESC_DATA_PTR alan null işaretçi olarak ayarlanmışsa diğer alanlar etkilenmez.

Bu alanın işaret ettiği tamponu dolduran SQLFetch veya SQLFetchScroll çağrısı SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO dönmediyse, tamponun içeriği tanımlanmamıştır.

APD, ARD veya IPD'nin SQL_DESC_DATA_PTR alanı ayarlandığında, sürücü SQL_DESC_TYPE alanındaki değerin geçerli ODBC C veri tiplerinden birini veya sürücüye özgü veri tipini içerdiğini ve veri tiplerini etkileyen diğer tüm alanların tutarlı olduğunu kontrol eder. Tutarlılık kontrolü önermek, IPD'nin SQL_DESC_DATA_PTR alanının tek kullanımıdır. Özellikle, bir uygulama IPD'nin SQL_DESC_DATA_PTR alanını ayar ve daha sonra bu alanda SQLGetDescField çağırırsa, belirlediği değer mutlaka döndürülmez. Daha fazla bilgi için SQLSetDescRec'teki "Tutarlılık Kontrolleri"ne bakınız.

SQL_DESC_DATETIME_INTERVAL_CODE [Hepsi]
Bu SQLSMALLINT kayıt alanı, SQL_DESC_TYPE alan SQL_DATETIME veya SQL_INTERVAL olduğunda belirli tarih veya aralık veri tipinin alt kodu içerir. Bu hem SQL hem de C veri tipleri için geçerlidir. Kod, veri tipi adından oluşur ve "CODE" yerine "TYPEtarih saati tipleri için" veya "C_TYPE" (tarih saatleri için) yerine "CODE" veya "C_INTERVAL" (aralık türleri için) yer alır.

Bir uygulama tanımlayıcısında SQL_DESC_TYPE ve SQL_DESC_CONCISE_TYPE SQL_C_DEFAULT olarak ayarlanmışsa ve tanımlayıcı bir ifade tutucusuyla ilişkilendirilmiyorsa, SQL_DESC_DATETIME_INTERVAL_CODE'in içeriği tanımlanmamıştır.

Bu alan, aşağıdaki tabloda listelenen tarih saati veri türleri için ayarlanabilir.

Tarih saati türleri 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

Bu alan, aşağıdaki tabloda listelenen aralık veri türleri için ayarlanabilir.

Aralık türü 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

Veri aralıkları ve bu alan hakkında daha fazla bilgi için Veri Tipi Tanımlayıcıları ve Tanımlayıcıları sayfasına bakınız.

SQL_DESC_DATETIME_INTERVAL_PRECISION [Hepsi]
Bu SQLINTEGER kayıt alanı, SQL_DESC_TYPE alan SQL_INTERVAL ise aralık lider hassasiyeti içerir. SQL_DESC_DATETIME_INTERVAL_CODE alanı aralıklı veri türüne ayarlandığında, bu alan varsayılan aralık hassasiyetine ayarlanır.

SQL_DESC_DISPLAY_SIZE [IRD'ler]
Bu yalnızca okunabilir SQLINTEGER kayıt alanı, sütundan veriyi göstermek için gereken maksimum karakter sayısını içerir.

SQL_DESC_FIXED_PREC_SCALE [Uygulama tanımlayıcıları]
Bu yalnızca okunabilir SQLSMALLINT kayıt alanı, sütun tam sayısal sütunsa ve sabit bir hassasiyet ve sıfır olmayan ölçeke sahipse SQL_TRUE olarak veya sütun sabit bir hassasiyet ve ölçekli tam sayısal sütun değilse SQL_FALSE olarak ayarlanır.

SQL_DESC_INDICATOR_PTR [Uygulama tanımlayıcıları]
ARD'lerde bu SQLLEN * kayıt alanı gösterge değişkenine işaret eder. Bu değişken, sütun değeri NULL ise SQL_NULL_DATA içerir. APD'ler için, gösterge değişkeni NULL dinamik argümanları belirtmek için SQL_NULL_DATA olarak ayarlanır. Aksi takdirde, değişken sıfırdır (SQL_DESC_INDICATOR_PTR ve SQL_DESC_OCTET_LENGTH_PTR değerleri aynı işaretçi değilse).

Eğer ARD'deki SQL_DESC_INDICATOR_PTR alanı null işaretçiyse, sürücünün sütunun NULL olup olmadığına dair bilgi geri vermesi engellenir. Eğer sütun NULL ve SQL_DESC_INDICATOR_PTR null işaretçiyse, sürücü SQLFetch veya SQLFetchScroll çağrısından sonra tamponu doldurmaya çalıştığında SQLSTATE 22002 (Gösterge değişkeni gerekli ama sağlanmamış) döner. Eğer SQLFetch veya SQLFetchScroll çağrısı SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO dönmediyse, tamponun içeriği tanımlanmamıştır.

SQL_DESC_INDICATOR_PTR alanı, SQL_DESC_OCTET_LENGTH_PTR ile işaret edilen alanın ayarlanıp ayarlanmadığını belirler. Bir sütunun veri değeri NULL ise, sürücü gösterge değişkenini SQL_NULL_DATA olarak ayarlar. SQL_DESC_OCTET_LENGTH_PTR tarafından işaret edilen alan o zaman ayarlanmaz. Getirme sırasında bir NULL değeri karşılaşılmazsa, SQL_DESC_INDICATOR_PTR ile işaretlenen tampon sıfıra ayarlanır ve SQL_DESC_OCTET_LENGTH_PTR ile işaretlenen tampon verinin uzunluğuna ayarlanır.

Eğer APD'deki SQL_DESC_INDICATOR_PTR alan null işaretçiyse, uygulama bu tanımlayıcı kaydı kullanarak NULL argümanlarını belirtemez.

Bu alan ertelenmiş bir alandır: Ayarlandığı anda kullanılmaz, ancak sürücü tarafından daha sonra ARD'ler için nullability'yi belirtmek veya APD'ler için nullability'yi belirlemek için kullanılır.

SQL_DESC_LABEL [IRD'ler]
Bu yalnızca okunabilir SQLCHAR * kayıt alanı, sütun etiketi veya başlığını içerir. Eğer sütunun etiketi yoksa, bu değişken sütun adını içerir. Sütun isimsiz ve etiketsizse, bu değişken boş bir dizi içerir.

SQL_DESC_LENGTH [Hepsi]
Bu SQLULEN kayıt alanı, bir karakter dizisinin maksimum veya gerçek uzunluğu ya da bayt cinsinden ikili veri tipidir. Sabit uzunluklu bir veri tipi için maksimum uzunluk, değişken uzunluklu veri tipi için ise gerçek uzunluktur. Değeri her zaman karakter dizisini bitiren null-sonlandırma karakterini hariç tutar. Tipi SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP veya SQL aralık veri tiplerinden biri olan değerler için, bu alan tarih saati veya aralık değerinin karakter dizisi temsilinin karakter cinsinden uzunluğuna sahiptir.

Bu alandaki değer, ODBC 2*.x*'de tanımlanan "uzunluk" değerinden farklı olabilir. Daha fazla bilgi için Ek D: Veri Türleri sayfasına bakınız.

SQL_DESC_LITERAL_PREFIX [IRD'ler]
Bu yalnızca okunabilir SQLCHAR * kayıt alanı, sürücünün bu veri türünün bir kelime harbi için önek olarak tanıdığı karakter veya karakterleri içerir. Bu değişken, literal önekin uygulanamadığı bir veri türü için boş bir dizi içerir.

SQL_DESC_LITERAL_SUFFIX [IRD'ler]
Bu yalnızca okunabilir SQLCHAR * kayıt alanı, sürücünün bu veri tipinin bir kelimesi için ek olarak tanıdığı karakter veya karakterleri içerir. Bu değişken, literal bir ekin uygulanamayan bir veri tipi için boş bir dizi içerir.

SQL_DESC_LOCAL_TYPE_NAME [Uygulama tanımlayıcıları]
Bu yalnızca okunabilir SQLCHAR * kayıt alanı, veri tipinin normal adından farklı olabilecek herhangi bir yerel (yerel dil) adını içerir. Yerel bir isim yoksa, boş bir dizi döner. Bu alan sadece görüntüleme amaçları içindir.

SQL_DESC_NAME [Uygulama tanımlayıcıları]
Bu SQLCHAR * kayıt alanı, eğer uygunsa sütun alias'ını içerir. Eğer sütun takma adı uygulanmazsa, sütun adı döner. Her iki durumda da, sürücü SQL_DESC_NAME alanını ayarladığında SQL_DESC_UNNAMED alanını SQL_NAMED olarak ayarlar. Eğer sütun adı veya bir sütun aliası yoksa, sürücü SQL_DESC_NAME alanında boş bir diziyi döndürür ve SQL_DESC_UNNAMED alanını SQL_UNNAMED olarak ayarlar.

Bir uygulama, bir IPD'nin SQL_DESC_NAME alanını bir parametre adı veya alias olarak ayarlayarak saklanan prosedür parametrelerini isimle belirtebilir. (Daha fazla bilgi için, bkz. İsme göre Bağlama Parametreleri (Adlandırılmış Parametreler).) IRD'nin SQL_DESC_NAME alanı sadece okunabilir bir alandır; Bir uygulama bunu ayarlamaya çalışırsa SQLSTATE HY091 (Geçersiz tanımlayıcı alanı tanımlayıcısı) döner.

IPD'lerde, sürücü adlandırılmış parametreleri desteklemiyorsa bu alan tanımlanmamıştır. Sürücü adlandırılmış parametreleri destekliyorsa ve parametreleri tanımlayabiliyorsa, parametre adı bu alanda döner.

SQL_DESC_NULLABLE [Uygulama tanımlayıcıları]
IRD'lerde, bu yalnızca okunabilir SQLSMALLINT kayıt alanı sütunun NULL değerleri olabilirse SQL_NULLABLE, sütunun NULL değerleri olmadığı SQL_NO_NULLS sütunun NULL değerleri olup olmadığı bilinmiyorsa SQL_NULLABLE_UNKNOWN olur. Bu alan, temel sütunla değil, sonuç kümesi sütununa aittir.

IPD'lerde bu alan her zaman SQL_NULLABLE olarak ayarlanır çünkü dinamik parametreler her zaman nullable'dir ve bir uygulama tarafından ayarlanamaz.

SQL_DESC_NUM_PREC_RADIX [Hep Birlikte]
Bu SQLINTEGER alanı, SQL_DESC_TYPE alanındaki veri tipi yaklaşık sayısal bir veri tipi ise 2 değeri içerir, çünkü SQL_DESC_PRECISION alanı bit sayısını içerir. Bu alan, SQL_DESC_TYPE alanındaki veri tipi tam sayısal veri tipi ise 10 değeri içerir, çünkü SQL_DESC_PRECISION alanı ondalık rakamların sayısını içerir. Bu alan, tüm sayısal olmayan veri türleri için 0 olarak ayarlanmıştır.

SQL_DESC_OCTET_LENGTH [Hepsi]
Bu SQLLEN kayıt alanı, bir karakter dizisinin veya ikili veri türünün bayt cinsinden uzunluğunu içerir. Sabit uzunluklu karakter veya ikili tipler için, bu gerçek uzunluk bayt cinsinden olur. Değişken uzunluklu karakter veya ikili tipler için, bu bayt cinsinden maksimum uzunluktur. Bu değer, uygulama tanımlayıcıları için null-terminasyon karakteri için her zaman boşluk hariç tutar ve uygulama tanımlayıcıları için null-sonlandırma karakteri için her zaman boşluk içerir. Uygulama verileri için, bu alan tamponun boyutunu içerir. APD'ler için bu alan yalnızca çıktı veya giriş/çıkış parametreleri için tanımlanmıştır.

SQL_DESC_OCTET_LENGTH_PTR [Uygulama tanımlayıcıları]
Bu SQLLEN * kayıt alanı, dinamik bir argümanın (parametre tanımlayıcıları için) veya sınırlı sütun değerinin (satır tanımlayıcıları için) bayt cinsinden toplam uzunluğunu içeren bir değişkene işaret eder.

Bir APD için, bu değer karakter dizisi ve ikili argümanlar hariç tüm argümanlar için göz ardı edilir; Eğer bu alan SQL_NTS'ye işaret ediyorsa, dinamik argüman null-sonlandırılmalıdır. Sınırlı bir parametrenin data-an-execut parametresi olacağını belirtmek için, bir uygulama, APD'nin uygun kaydındaki bu alanı bir değişkene ayarlar ve bu değişken çalıştırma anında SQL_DATA_AT_EXEC değerini veya SQL_LEN_DATA_AT_EXEC makrosunun sonucunu içerir. Birden fazla böyle alan varsa, SQL_DESC_DATA_PTR parametreyi benzersiz şekilde tanımlayan bir değere ayarlanabilir ve böylece uygulama hangi parametrenin istendiğini belirlemeye yardımcı olur.

Bir ARD'nin OCTET_LENGTH_PTR alanı null işaretçi ise, sürücü sütun uzunluğu bilgisini döndürmez. Eğer bir APD'nin SQL_DESC_OCTET_LENGTH_PTR alanı bir null işaretçi ise, sürücü karakter dizelerinin ve ikili değerlerin null-sonlandığını varsayar. (İkili değerler null-sonlandırılmamalı, ancak kesintiden kaçınmak için bir uzunluk verilmelidir.)

Bu alanın işaret ettiği tamponu dolduran SQLFetch veya SQLFetchScroll çağrısı SQL_SUCCESS veya SQL_SUCCESS_WITH_INFO dönmediyse, tamponun içeriği tanımlanmamıştır. Bu alan ertelenmiş bir alandır. Ayarlandığı anda kullanılmaz, ancak sürücü tarafından verinin sektek uzunluğunu belirlemek veya belirtmek için daha sonra kullanılır.

SQL_DESC_PARAMETER_TYPE [IPD'ler]
Bu SQLSMALLINT kayıt alanı giriş parametresi için SQL_PARAM_INPUT, giriş/çıkış parametresi için SQL_PARAM_INPUT_OUTPUT, çıkış parametresi SQL_PARAM_OUTPUT, giriş/çıkış akışı parametresi SQL_PARAM_INPUT_OUTPUT_STREAM veya çıkış akışı parametresi için SQL_PARAM_OUTPUT_STREAM olarak ayarlanmıştır. Varsayılan olarak SQL_PARAM_INPUT olarak ayarlanmıştır.

IPD için, alan sürücü tarafından otomatik olarak doldurulmazsa (SQL_ATTR_ENABLE_AUTO_IPD ifadesi özniteliği SQL_FALSE) varsayılan olarak SQL_PARAM_INPUT olarak ayarlanır. Bir uygulama, giriş parametresi olmayan parametreler için IPD'de bu alanı ayarlamalıdır.

SQL_DESC_PRECISION [Hepsi]
Bu SQLSMALLINT kayıt alanı, tam bir sayısal tip için rakam sayısını, yaklaşık sayısal tip için mantissa'daki bit sayısını (ikili hassasiyet) veya SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP veya SQL_INTERVAL_SECOND veri tipi için kesirli saniye bileşenindeki basamak sayısını içerir. Bu alan, diğer tüm veri türleri için tanımlanmamıştır.

Bu alandaki değer, ODBC 2*.x*'de tanımlanan "hassasiyet" değerinden farklı olabilir. Daha fazla bilgi için Ek D: Veri Türleri sayfasına bakınız.

SQL_DESC_ROWVER [Uygulama tanımlayıcıları]
Bu SQLSMALLINTrecord alanı, bir satır güncellendiğinde (örneğin, SQL Server'daki "zaman damgası" tipindeki bir sütun) DBMS tarafından otomatik olarak değiştirilip değiştirilmediğini gösterir. Bu kayıt alanının değeri, sütun bir satır versiyon sütunu ise SQL_TRUE olarak ayarlanır, aksi takdirde ise SQL_FALSE olarak ayarlanır. Bu sütun özniteliği, bir sütunun otomatik güncellenip güncellenmediğini belirlemek için IdentifierType of SQL_ROWVER ile SQLSpecialColumns çağrısına benzer.

SQL_DESC_SCALE [Hepsi]
Bu SQLSMALLINT kayıt alanı, ondalık ve sayısal veri türleri için tanımlanmış ölçeği içerir. Alan diğer tüm veri türleri için tanımlanmamıştır.

Bu alandaki değer, ODBC 2*.x*'de tanımlanan "ölçek" değerinden farklı olabilir. Daha fazla bilgi için Ek D: Veri Türleri sayfasına bakınız.

SQL_DESC_SCHEMA_NAME [IRD'ler]
Bu sadece okunabilir SQLCHAR * kayıt alanı, sütunu içeren temel tablonun şema adını içerir. Dönüş değeri, sütun bir ifade ise veya sütun bir görünümün parçasa sürücüye bağlıdır. Veri kaynağı şemaları desteklemiyorsa veya şema adı belirlenemiyorsa, bu değişken boş bir dizi içerir.

SQL_DESC_SEARCHABLE [IRD'ler]
Bu yalnızca okunabilir SQLSMALLINT kayıt alanı aşağıdaki değerlerden birine ayarlanmıştır:

  • SQL_PRED_NONE sütunun WHERE maddesinde kullanılamıyorsa. (Bu, ODBC 2*.x*'deki SQL_UNSEARCHABLE değeriyle aynıdır.)

  • SQL_PRED_CHAR sütunun, sadece LIKE önlemiyle WHERE cümlesinde kullanılabiliyor olabilir. (Bu, ODBC 2*.x*'deki SQL_LIKE_ONLY değeriyle aynıdır.)

  • SQL_PRED_BASIC sütun, LIKE hariç tüm karşılaştırma operatörleriyle bir WHERE cümlesinde kullanılabiliyor mu? (Bu, ODBC 2*.x*'deki SQL_EXCEPT_LIKE değeriyle aynıdır.)

  • SQL_PRED_SEARCHABLE sütunun herhangi bir karşılaştırma operatörüyle bir WHERE cümlesinde kullanılabiliyor mu?

SQL_DESC_TABLE_NAME [IRD'ler]
Bu yalnızca okunabilir SQLCHAR * kayıt alanı, bu sütunu içeren temel tablonun adını içerir. Dönüş değeri, sütun bir ifade ise veya sütun bir görünümün parçasa sürücüye bağlıdır.

SQL_DESC_TYPE [Hepsi]
Bu SQLSMALLINT kayıt alanı, tarih ve zaman aralığı veri türleri hariç tüm veri türleri için kısa SQL veya C veri tipini belirtir. Tarih ve aralık veri türleri için, bu alan SQL_DATETIME veya SQL_INTERVAL olan ayrıntılı veri tipini belirtir.

Bu alan SQL_DATETIME veya SQL_INTERVAL içerdiğinde, SQL_DESC_DATETIME_INTERVAL_CODE alanı kısa tip için uygun alt kodu içermelidir. Tarih saati veri tipleri için, SQL_DESC_TYPE SQL_DATETIME içerir ve SQL_DESC_DATETIME_INTERVAL_CODE alanı belirli tarih saati veri tipi için bir alt kod içerir. Aralık veri tipleri için, SQL_DESC_TYPE SQL_INTERVAL içerir ve SQL_DESC_DATETIME_INTERVAL_CODE alanı belirli aralık veri tipi için bir alt kod içerir.

SQL_DESC_TYPE ve SQL_DESC_CONCISE_TYPE alanlarındaki değerler birbirine bağlıdır. Her bir alan ayarlandığında, diğeri de ayarlanmalıdır. SQL_DESC_TYPE, SQLSetDescField veya SQLSetDescRec çağrısıyla ayarlanabilir. SQL_DESC_CONCISE_TYPE, SQLBindCol veya SQLBindParameter veya SQLSetDescField çağrısıyla ayarlanabilir.

Eğer SQL_DESC_TYPE, aralık veya tarih saati veri türü dışında kısa bir veri türüne ayarlanırsa, SQL_DESC_CONCISE_TYPE alanı aynı değere ayarlanır ve SQL_DESC_DATETIME_INTERVAL_CODE alanı 0 olarak ayarlanır.

Eğer SQL_DESC_TYPE çok uzun tarih veya aralık veri tipine (SQL_DATETIME veya SQL_INTERVAL) ayarlanmışsa ve SQL_DESC_DATETIME_INTERVAL_CODE alanı uygun alt kod olarak ayarlanmışsa, SQL_DESC_CONCISE TYPE alan ilgili kısa tipe ayarlanır. SQL_DESC_TYPE kısa tarih saati veya aralık türlerinden birine ayarlamaya çalışıldığında SQLSTATE HY021 (Tutarsız tanımlayıcı bilgisi) döner.

SQL_DESC_TYPE alanı SQLBindCol, SQLBindParameter veya SQLSetDescField çağrısıyla ayarlandığında, aşağıdaki alanlar aşağıdaki varsayılan değerlere ayarlanır; aşağıdaki tabloda gösterildiği gibi. Aynı kaydın kalan alanlarının değerleri tanımlanmamıştır.

Değer SQL_DESC_TYPE Örtük olarak belirlenen diğer alanlar
SQL_CHAR, SQL_VARCHAR, SQL_C_CHAR, SQL_C_VARCHAR SQL_DESC_LENGTH 1 olarak ayarlandı. SQL_DESC_PRECISION 0'a ayarlanmış.
SQL_DATETIME SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE veya SQL_CODE_TIME olarak ayarlandığında, SQL_DESC_PRECISION 0'a ayarlanır. SQL_DESC_TIMESTAMP olarak ayarlandığında, SQL_DESC_PRECISION 6'ya ayarlanır.
SQL_DECIMAL, SQL_NUMERIC, SQL_C_NUMERIC SQL_DESC_SCALE 0'a ayarlanmış. SQL_DESC_PRECISION, ilgili veri türü için uygulama tarafından tanımlanmış hassasiyete ayarlanmıştır.

Bir SQL_C_NUMERIC değerini manuel olarak nasıl bağlanacağı hakkında bilgi için SQL to C: Numeric'e bakınız.
SQL_FLOAT, SQL_C_FLOAT SQL_DESC_PRECISION, SQL_FLOAT için uygulama tarafından tanımlanmış varsayılan hassasiyete ayarlanmıştır.
SQL_INTERVAL SQL_DESC_DATETIME_INTERVAL_CODE aralıklı veri türüne ayarlandığında, SQL_DESC_DATETIME_INTERVAL_PRECISION 2 olarak ayarlanır (varsayılan aralık hassasiyeti öncüsü). Aralıkta bir saniye bileşeni olduğunda, SQL_DESC_PRECISION 6'ya ayarlanır (varsayılan aralık saniye hassasiyeti).

Bir uygulama, SQLSetDescRec çağırmak yerine tanımlayıcının alanlarını belirlemek için SQLSetDescField çağırdığında, uygulama önce veri türünü bildirmelidir. Gerçekleştiğinde, önceki tabloda belirtilen diğer alanlar örtük olarak ayarlanır. Eğer örtük olarak belirlenen değerlerden herhangi biri kabul edilemezse, uygulama kabul edilemez değeri açıkça ayarlamak için SQLSetDescField veya SQLSetDescRec çağırabilir.

SQL_DESC_TYPE_NAME [Uygulama tanımlayıcıları]
Bu sadece okunabilir SQLCHAR * kayıt alanı, veri kaynağına bağlı tür adını içerir (örneğin, "CHAR", "VARCHAR" vb.). Veri tipi adı bilinmiyorsa, bu değişken boş bir dizi içerir.

SQL_DESC_UNNAMED [Uygulama tanımlayıcıları]
Bu SQLSMALLINT kayıt alanı bir satır tanımlayıcısında, sürücü tarafından SQL_DESC_NAME alanını ayarladığında ya SQL_NAMED ya da SQL_UNNAMED olarak ayarlanır. Eğer SQL_DESC_NAME alanında bir sütun aliası varsa veya sütun aliası uygulanmıyorsa, sürücü SQL_DESC_UNNAMED alanını SQL_NAMED olarak ayarlar. Bir uygulama IPD'nin SQL_DESC_NAME alanını bir parametre adı veya alias olarak ayarlarsa, sürücü IPD'nin SQL_DESC_UNNAMED alanını SQL_NAMED olarak ayarlar. Eğer sütun adı veya bir sütun aliası yoksa, sürücü SQL_DESC_UNNAMED alanını SQL_UNNAMED olarak ayarlar.

Bir uygulama, IPD'nin SQL_DESC_UNNAMED alanını SQL_UNNAMED olarak ayarlayabilir. Bir sürücü, bir uygulama IPD'nin SQL_DESC_UNNAMED alanını SQL_NAMED olarak ayarlamaya çalışırsa SQLSTATE HY091 (Geçersiz tanımlayıcı alanı tanımlayıcısı) döndürür. IRD'nin SQL_DESC_UNNAMED alanı yalnızca okunabilir; Bir uygulama bunu ayarlamaya çalışırsa SQLSTATE HY091 (Geçersiz tanımlayıcı alanı tanımlayıcısı) döner.

SQL_DESC_UNSIGNED [Uygulama tanımlayıcıları]
Bu yalnızca okunabilir SQLSMALLINT kayıt alanı, sütun tipi imzasız veya sayısal değilse SQL_TRUE veya sütun tipi imzalıysa SQL_FALSE olarak ayarlanır.

SQL_DESC_UPDATABLE [IRD'ler]
Bu yalnızca okunabilir SQLSMALLINT kayıt alanı aşağıdaki değerlerden birine ayarlanmıştır:

  • SQL_ATTR_READ_ONLY sonuç kümesi sütunu sadece okunabilirse bu sorun olabilir.

  • SQL_ATTR_WRITE sonuç kümesi sütunu okuma-yazma ise.

  • SQL_ATTR_READWRITE_UNKNOWN sonuç kümesi sütununun güncellenebilir mi yoksa güncellenemeyeceği bilinmiyor.

SQL_DESC_UPDATABLE, temel tablodaki sütunun değil, sonuç kümesindeki sütunun güncellenebilirliğini tanımlar. Bu sonuç kümesi sütununun dayandığı temel tablodaki sütunun güncellenebilirliği, bu alandaki değerden farklı olabilir. Bir sütunun güncellenebilir olup olmadığı, veri türüne, kullanıcı ayrıcalıklarına ve sonuç kümesinin tanımına dayanabilir. Bir sütunun güncellenebilir olup olmadığı belirsizse, SQL_ATTR_READWRITE_UNKNOWN geri gönderilmelidir.

Tutarlılık Kontrolleri

Bir uygulama ARD, APD veya IPD'nin SQL_DESC_DATA_PTR alanı için bir değer geçirdiğinde sürücü tarafından otomatik olarak tutarlılık kontrolü yapılır. Eğer alanlardan herhangi biri diğer alanlarla tutarsızsa, SQLSetDescField SQLSTATE HY021 (Tutarsız tanımlayıcı bilgisi) döndürecektir. Daha fazla bilgi için SQLSetDescRec'teki "Tutarlılık Kontrolü"ne bakınız.

Hakkında bilgi için Bkz:
Bir sütunun bağlanması SQLBindCol İşlevi
Bir parametre bağlama SQLBindParameter Fonksiyonu
Tanımlayıcı alan elde etmek SQLGetDescField Fonksiyonu
Birden fazla tanımlayıcı alanı elde etmek SQLGetDescRec Function
Birden fazla tanımlayıcı alanı ayarlanması SQLSetDescRec Function

Ayrıca Bkz.

ODBC Üst Bilgi Dosyaları
ODBC API Referansı