SQLDescribeCol İşlevi

Uygunluk
Kullanıma Sunulan Sürüm: ODBC 1.0 Standartları Uyumluluğu: ISO 92

Summary
SQLDescribeCol , sonuç kümesindeki bir sütun için sonuç tanımlayıcısını - sütun adı, tür, sütun büyüklüğü, ondalık rakamlar ve nullability - döndürür. Bu bilgiler IRD alanlarında da mevcuttur.

Syntax

  
SQLRETURN SQLDescribeCol(  
      SQLHSTMT       StatementHandle,  
      SQLUSMALLINT   ColumnNumber,  
      SQLCHAR *      ColumnName,  
      SQLSMALLINT    BufferLength,  
      SQLSMALLINT *  NameLengthPtr,  
      SQLSMALLINT *  DataTypePtr,  
      SQLULEN *      ColumnSizePtr,  
      SQLSMALLINT *  DecimalDigitsPtr,  
      SQLSMALLINT *  NullablePtr);  

Arguments

StatementHandle
[Giriş] Deyim tanıtıcısı.

ColumnNumber
[Giriş] Sonuç verisinin sütun sayısı, artan sütun sırasıyla sıralanmış şekilde, 1'den başlayarak. ColumnNumber argümanı ayrıca yer imi sütununu tanımlamak için 0 olarak ayarlanabilir.

ColumnName
[Çıkış] Sütun adını döndürmek için null-sonlu bir tampon işareti. Bu değer IRD'nin SQL_DESC_NAME alanından okunur. Sütun isimsiz ise veya sütun adı belirlenemiyorsa, sürücü boş bir diziyi döndürür.

ColumnName NULL ise, NameLengthPtr yine de ColumnName tarafından işaretlenen tamponda döndürülebilecek toplam karakter sayısını (karakter verisi için null-sonlandırma karakteri hariç) döndürecektir.

BufferLength
[Giriş] *ColumnName tamponunun uzunluğu, karakter cinsinden.

NameLengthPtr
[Çıkış] *ColumnName'de döndürülebilecek toplam karakter sayısını (null sonlandırma hariç) döndürmek için bir tampon işareti. Eğer döndürülebilecek karakter sayısı BufferLength'den büyük veya eşitse, *ColumnName içindeki sütun adı BufferLength olarak kısaltılır, eksik null-sonlama karakterinin uzunluğu.

DataTypePtr
[Çıkış] Sütunun SQL veri tipini döndürmek için bir tampon işareti. Bu değer IRD'nin SQL_DESC_CONCISE_TYPE alanından okunur. Bu, SQL Veri Tipleri'ndeki değerlerden biri veya sürücüye özgü bir SQL veri tipi olacaktır. Veri türü belirlenemezse, sürücü SQL_UNKNOWN_TYPE döndürür.

ODBC 3'te. x, SQL_TYPE_DATE, SQL_TYPE_TIME veya SQL_TYPE_TIMESTAMP tarih, saat veya zaman damgası verileri için *DataTypePtr'de döner; ODBC 2'de. x, SQL_DATE, SQL_TIME veya SQL_TIMESTAMP döner. Sürücü Yöneticisi, ODBC 2 olduğunda gerekli eşlemeleri gerçekleştirir. x uygulaması ODBC 3 ile çalışıyor. x sürücü veya ODBC 3 olduğunda. x uygulaması ODBC 2 ile çalışıyor. x sürücü.

ColumnNumber 0'a eşit olduğunda (yer imi sütunu için), değişken uzunluktaki yer imleri için *DataTypePtr'de SQL_BINARY döner. (SQL_INTEGER, ODBC 3 tarafından yer imleri kullanılıyorsa geri döner. x uygulaması ODBC 2 ile çalışıyor. x sürücüsü veya ODBC 2 ile yapılabilir. x uygulaması ODBC ile çalışıyor 3. x sürücü.)

Bu veri türleri hakkında daha fazla bilgi için Ek D'deki SQL Veri Tipleri'ne bakınız: Veri Tipleri. Sürücüye özgü SQL veri türleri hakkında bilgi için sürücünün belgelerine bakın.

ColumnSizePtr
[Çıkış] Veri kaynağındaki sütunun boyutunu (karakter cinsinden) döndürmek için bir tampon işareti. Sütun boyutu belirlenemezse, sürücü 0 döner. Sütun boyutu hakkında daha fazla bilgi için Ek D'deki Column Size, Desimal Digits, Transfer Octet Length ve Display Size bakınız: Veri Türleri.

DecimalDigitsPtr
[Çıkış] Veri kaynağındaki sütunun ondalık rakamlarının sayısını döndürmek için bir tampona işaretçi. Ondalık rakamların sayısı belirlenemezse veya uygulanmazsa, sürücü 0 döndürür. Ondalık rakamlar hakkında daha fazla bilgi için Ek D'deki Column Size, Desimal Digits, Transfer Octet Length ve Display Size bakınız: Veri Türleri.

NullablePtr
[Çıkış] Sütunun NULL değerlerine izin verip vermediğini gösteren bir değeri döndürmek için bir tampon işareti. Bu değer IRD'nin SQL_DESC_NULLABLE alanından okunur. Değer aşağıdakilerden biridir:

SQL_NO_NULLS: Sütun NULL değerlerine izin vermez.

SQL_NULLABLE: Sütun NULL değerlere izin verir.

SQL_NULLABLE_UNKNOWN: Sürücü, sütunun NULL değerlerine izin verip vermediğini belirleyemez.

İadeler

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ya da SQL_INVALID_HANDLE.

Diagnostics

SQLDescribeCol SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri alınabilir; bu değer SQLGetDiagRec çağrılarak SQL_HANDLE_STMT HandleType ve HandleType of StatementHandle ile elde edilebilir. Aşağıdaki tablo, SQLDescribeCol tarafından sıkça duygulanan SQLSTATE değerlerini listeler; "(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.)
01004 Dize verileri, sağ kesilmiş *ColumnName tamponu tüm sütun adını döndürecek kadar büyük değildi, bu yüzden sütun adı kısaltıldı. Kısaltmamış sütun adının uzunluğu *NameLengthPtr. (İşlev SQL_SUCCESS_WITH_INFO döndürür.)
07005 Hazırlanmış ifade, bir imleç belirtisi değil StatementHandle ile ilişkili ifade sonuç kümesi döndürmedi. Anlatacak sütun yoktu.
07009 Geçersiz tanımlayıcı indeksi (DM) Argüman ColumnNumber için belirtilen değer 0'a eşit ve SQL_ATTR_USE_BOOKMARKS ifadesi seçeneği SQL_UB_OFF.

ColumnNumber argümanı için belirtilen değer, sonuç kümesindeki sütun sayısından büyüktü.
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.
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 tahsisi hatası Sürücü, işlevin yürütülmesini veya tamamlanmasını desteklemek için gereken belleği ayıramadı.
HY008 İşlem iptal edildi StatementHandle için zaman uyumsuz işleme etkinleştirildi. İşlev çağrıldı ve yürütme tamamlanmadan önce StatementHandle üzerinde SQLCancel veya SQLCancelHandle çağrıldı. Ardından işlev StatementHandle üzerinde yeniden çağrıldı.

İşlev çağrıldı ve yürütme tamamlanmadan önce, çok iş parçacıklı bir uygulamadaki farklı bir iş parçacığından StatementHandle üzerinde SQLCancel veya SQLCancelHandle çağrıldı.
HY010 İşlev dizisi hatası (DM) StatementHandle ile ilişkili bağlantı tanıtıcısı için zaman uyumsuz olarak yürütülen bir işlev çağrıldı. Bu asenkron fonksiyon SQLDescribeCol çağrıldığında hâlâ çalışıyordu.

(DM) SQLExecute, SQLExecDirect veya SQLMoreResults, StatementHandle için çağrıldı ve SQL_PARAM_DATA_AVAILABLE döndürdü. Bu işlev, tüm akış parametreleri için veri alınmadan önce çağrıldı.

(DM) StatementHandle için zaman uyumsuz olarak yürütülen bir işlev (bu işlev değil) çağrıldı ve bu işlev çağrıldığında hala yürütülüyordu.

(DM) Fonksiyon, SQLPrepare, SQLExecute veya ifade tutucundaki bir katalog fonksiyonu çağrılmadan önce çağrılmıştır.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations veya SQLSetPos, StatementHandle için çağrıldı ve SQL_NEED_DATA döndürdü. 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ı.
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.
HY090 Geçersiz dize veya arabellek uzunluğu (DM) BufferLength bağımsız değişkeni için belirtilen değer 0'dan küçüktür.
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ınma durumu hakkında daha fazla bilgi için bkz. SQLEndTran İşlevi.
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) StatementHandle ile ilişkili sürücü işlevi desteklemiyor.
IM017 Yoklama zaman uyumsuz bildirim modunda devre dışı bırakıldı Bildirim modeli her kullanıldığında yoklama devre dışı bırakılır.
IM018 SQLCompleteAsync , bu tanıtıcıda önceki zaman uyumsuz işlemi tamamlamak için çağrılmadı. Tanıtıcıdaki önceki işlev çağrısı SQL_STILL_EXECUTING döndürüyorsa ve bildirim modu etkinleştirildiyse, son işlemeyi yapmak ve işlemi tamamlamak için tanıtıcıda SQLCompleteAsync çağrılmalıdır.

SQLDescribeCol, veri kaynağının özet tutucuyla ilişkili SQL ifadesini ne zaman değerlendirdiğine bağlı olarak, SQLPrepare veya SQLExecute tarafından çağrıldığında geri döndürülebilecek herhangi bir SQLSTATE'i döndürebilir.

Performans nedenleriyle, bir uygulama bir ifadeyi çalıştırmadan önce SQLDescribeCol çağrısı yapmamalıdır.

Comments

Bir uygulama genellikle SQLPrepare çağrısından sonra ve ilişkili SQLExecute çağrısından önce veya sonra SQLDescribeCol çağırır. Bir uygulama, SQLExecDirect çağrısından sonra SQLDescribeCol çağrısı da yapabilir. Daha fazla bilgi için bkz . Sonuç Kümesi Meta Verileri.

SQLDescribeCol , SELECT ifadesi tarafından oluşturulan sütun adı, türü ve uzunluğunu alır. Eğer sütun bir ifade ise, *ColumnName ya boş bir dizedir ya da sürücü tanımlı bir addır.

Note

ODBC, Open Group ve SQL Access Group Call Level spesifikasyonu SQLDescribeCol için bu seçeneği belirtmese de, SQL_NULLABLE_UNKNOWN uzantı olarak destekler.

Hakkında bilgi için Bkz:
Sonuç kümesindeki bir sütuna arabellek bağlama Sqlbindcol
Deyim işlemeyi iptal etme SQLCancel
Sonuç kümesindeki bir sütunla ilgili bilgi döndürme Sqlcolattribute
Birden çok veri satırı getirme Sqlfetch
Sonuç kümesi sütunlarının sayısını döndürmek Sqlnumresultcols
Bir deyimi yürütme için hazırlama Sqlprepare