SQLGetTypeInfo İşlevi

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

Özet
SQLGetTypeInfo, veri kaynağı tarafından desteklenen veri türleri hakkında bilgi döndürür. Sürücü, bilgiyi SQL sonuç kümesi şeklinde döndürür. Veri türleri, Veri Tanım Dili (DDL) ifadelerinde kullanılmak üzere tasarlanmıştır.

Important

Uygulamalar, SQLGetTypeInfo sonuç kümesi ALTER TABLE ve CREATE TABLE ifadelerinin TYPE_NAME sütununda döndürülen tip adlarını kullanmak zorundadır. SQLGetTypeInfo , DATA_TYPE sütununda aynı değere sahip birden fazla satır döndürebilir.

Syntax

  
SQLRETURN SQLGetTypeInfo(  
     SQLHSTMT      StatementHandle,  
     SQLSMALLINT   DataType);  

Arguments

StatementHandle
[Giriş] Sonuç kümesi için ifade tutucu.

Datatype
[Giriş] SQL veri türü. Bu, Ek D: Veri Tipleri (Ek D) SQL Veri Tipleri bölümündeki değerlerden biri veya sürücüye özgü bir SQL veri türü olmalıdır. SQL_ALL_TYPES, tüm veri türlerine ilişkin bilgilerin iade edilmesini belirtir.

İadeler

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ya da SQL_INVALID_HANDLE.

Diagnostics

SQLGetTypeInfo SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri SQLGetDiagRec çağrılarak SQL_HANDLE_STMT HandleType ve HandleHandle ile elde edilebilir. Aşağıdaki tablo, SQLGetTypeInfo 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 Uygulama çalışma koşulları nedeniyle belirtilen deyim özniteliği geçersizdi, bu nedenle benzer bir değer geçici olarak değiştirildi. (Geçici olarak yerine getirilen değeri belirlemek için SQLGetStmtAttr arayın.) Yerine geçen değer, imleç kapatılana kadar StatementHandle için geçerlidir. Değiştirilebilecek ifade özellikleri şunlardır: SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_KEYSET_SIZE, SQL_ATTR_MAX_LENGTH, SQL_ATTR_MAX_ROWS, SQL_ATTR_QUERY_TIMEOUT ve SQL_ATTR_SIMULATE_CURSOR. (İşlev SQL_SUCCESS_WITH_INFO döndürür.)
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.
24000 Geçersiz imleç durumu StatementHandle'da bir imleç açıktı ve SQLFetch veya SQLFetchScroll çağrılmıştı. BU hata, SQLFetch veya SQLFetchScroll SQL_NO_DATA döndürmediyse Sürücü Yöneticisi tarafından döndürülür ve SQLFetch veya SQLFetchScroll SQL_NO_DATA döndürdüyse sürücü tarafından döndürülür.

StatementHandle üzerinde bir sonuç kümesi açıktı, ancak SQLFetch veya SQLFetchScroll çağrılmamıştı.
40001 Serileştirme hatası Başka bir işlemle kaynak kilitlenmesi nedeniyle işlem geri alındı.
40003 Deyim tamamlama bilinmiyor İlgili bağlantı bu fonksiyonun yürütülmesi sırasında başarısız oldu ve işlemin durumu belirlenemiyor.
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ı.
HY004 Geçersiz SQL veri tipi DataType argümanı için belirtilen değer, ne geçerli bir ODBC SQL veri tipi tanımlayıcısı ne de sürücü tarafından desteklenen sürücüye özgü veri tipi tanımlayıcısı değildi.
HY008 İşlem iptal edildi StatementHandle için asenkron işlem etkinleştirildi, ardından fonksiyon çağrıldı ve çalıştırma tamamlanmadan önce StatementHandleüzerinde SQLCancel veya SQLCancelHandle çağrıldı. Ardından işlev StatementHandle üzerinde yeniden çağrıldı.

Fonksiyon çağrıldı ve çalıştırma tamamlanmadan önce, çok iş parçacıklı 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 SQLGetTypeInfo fonksiyonu ç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) 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.
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.
HYC00 İsteğe bağlı özellik uygulanmadı SQL_ATTR_CONCURRENCY ve SQL_ATTR_CURSOR_TYPE deyimi özniteliklerinin geçerli ayarlarının birleşimi sürücü veya veri kaynağı tarafından desteklenmiyordu.

SQL_ATTR_USE_BOOKMARKS deyimi özniteliği SQL_UB_VARIABLE olarak, SQL_ATTR_CURSOR_TYPE deyimi özniteliği ise sürücünün yer işaretlerini desteklemediği bir imleç türüne ayarlandı.
HYT00 Zaman aşımı süresi doldu Veri kaynağı sonuç kümesini döndürmeden önce sorgu zaman aşımı süresi doldu. Zaman aşımı süresi SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT aracılığıyla ayarlanır.
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'a karşılık gelen sürücü bu fonksiyonu desteklemez.
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.

Comments

SQLGetTypeInfo sonuçları standart bir sonuç seti olarak, DATA_TYPE sırayla ve ardından veri türünün ilgili ODBC SQL veri tipine ne kadar yakın eşlendiğine göre döndürür. Veri kaynağı tarafından tanımlanan veri türleri, kullanıcı tanımlı veri tiplerine göre önceliklidir. Sonuç olarak, sıralama sırası mutlaka tutarlı değildir, ancak önce DATA_TYPE, ardından TYPE_NAME olarak genellenebilir; her ikisi de yükselir. Örneğin, bir veri kaynağı INTEGER ve SAYAC veri türlerini tanımladığını varsayalalım; burada SAYAC otomatik olarak artıyor ve kullanıcı tarafından tanımlanan bir veri tipi WHOLENUM da tanımlanmıştır. Bunlar INTEGER, WHOLENUM ve SAYAC sırasında döner, çünkü WHOLENUM, ODBC SQL veri tipi SQL_INTEGER'ye yakından eşlenirken, otomatik artıran veri tipi, veri kaynağı tarafından desteklense de, ODBC SQL veri tipine yakın eşlenmez. Bu bilgilerin nasıl kullanılabileceği hakkında bilgi için DDL Açıklamaları'na bakınız.

Eğer DataType argümanı, sürücünün desteklediği ODBC sürümü için geçerli olan ancak sürücü tarafından desteklenmeyen bir veri tipini belirtiyorsa, boş bir sonuç kümesi döner.

Note

ODBC katalog işlevlerinin genel kullanımı, bağımsız değişkenleri ve döndürülen verileri hakkında daha fazla bilgi için bkz . Katalog İşlevleri.

Aşağıdaki sütunlar ODBC 3 için yeniden adlandırılmıştır. x. Sütun adı değişiklikleri, uygulamalar sütun numarasına göre bağlandığı için geriye doğru uyumluluğu etkilemez.

ODBC 2.0 sütunu ODBC 3. x sütunu
KESİNLİK KOLON_BOYUTU
PARA FIXED_PREC_SCALE
AUTO_INCREMENT AUTO_UNIQUE_VALUE

Aşağıdaki sütunlar, SQLGetTypeInfo tarafından ODBC 3 için gönderilen sonuç setine eklenmiştir. X:

  • SQL_DATA_TYPE (SQL veri tipi)

  • ARALIK_HASSASİYETİ

  • SQL_DATETIME_SUB

  • SAYI_KESİN_TABAN

Aşağıdaki tabloda sonuç kümesindeki sütunlar listelenir. 19. sütun (INTERVAL_PRECISION) ötesinde ek sütunlar sürücü tarafından tanımlanabilir. Bir uygulama, açık bir sıralı konum belirtmek yerine sonuç kümesinin sonundan geri sayarak sürücüye özgü sütunlara erişim sağlamalıdır. Daha fazla bilgi için bkz. Katalog İşlevleri Tarafından Döndürülen Veriler.

Note

SQLGetTypeInfo tüm veri türlerini döndürmeyebilir. Örneğin, bir sürücü kullanıcı tanımlı veri türlerini döndürmeyebilir. Uygulamalar, SQLGetTypeInfo tarafından döndürülse de geri dönmediğine bakılmaksızın herhangi bir geçerli veri türünü kullanabilir. SQLGetTypeInfo tarafından döndürülen veri türleri, veri kaynağı tarafından desteklenenlerdir. Bunlar Veri Tanım Dili (DDL) ifadelerinde kullanılmak üzere tasarlanmıştır. Sürücüler, SQLGetTypeInfo tarafından gönderilen türlerden farklı veri türleri kullanarak sonuç kümesi verilerini döndürebilir. Bir katalog fonksiyonu için sonuç seti oluşturulurken, sürücü veri kaynağı tarafından desteklenmeyen bir veri tipini kullanabilir.

Sütun adı Column

number
Veri türü Comments
TYPE_NAME (ODBC 2.0) 1 Varchar NULL değil Veri kaynağına bağlı veri tipi adı; örneğin, "CHAR()", "VARCHAR()", "MONEY", "LONG VARBINARY" veya "CHAR ( ) FOR BIT VERISI". Uygulamalar bu ismi ve CREATE TABLEALTER TABLE ifadelerde kullanmak zorundadır.
DATA_TYPE (ODBC 2.0) 2 Smallint NULL değil SQL veri türü. Bu bir ODBC SQL veri türü veya sürücüye özgü bir SQL veri türü olabilir. Tarih saati veya aralık veri tipleri için, bu sütun kısa veri tipini (örneğin SQL_TYPE_TIME veya SQL_INTERVAL_YEAR_TO_MONTH) döndürür. Geçerli ODBC SQL veri türlerinin listesi için, Ek D: Veri Tipleri'ndeki SQL Veri Tipleri'ne bakınız. Sürücüye özgü SQL veri türleri hakkında bilgi için sürücünün belgelerine bakın.
COLUMN_SIZE (ODBC 2.0) 3 Integer Bu veri tipi için sunucunun desteklediği maksimum sütun boyutu. Sayısal veriler için bu, maksimum hassasiyettir. Dizi verisi için bu, uzunluk karakter cinsinden yapılır. Tarih zamanı veri tipleri için, bu dizi temsilinin karakter cinsinden uzunluğudur (kesirli saniye bileşeninin izin verilen maksimum hassasiyeti varsayıldığı varsayılırsa). NULL, sütun boyutu uygulanamayan veri tipleri için döner. Aralık veri tipleri için, bu aralık literalinin karakter temsili içindeki karakter sayısıdır (aralık lider hassasiyetiyle tanımlandığı gibi; bkz. Ek D'deki Aralık Veri Tipi Uzunluğu : Veri Türleri).

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.
LITERAL_PREFIX (ODBC 2.0) 4 Varchar Kelime harbi öneki için kullanılan karakter veya karakterler; örneğin, karakter veri tipleri için tek tırnak işareti (') veya ikili veri tipleri için 0x; NULL, literal önek uygulanmayan veri tipleri için geri döner.
LITERAL_SUFFIX (ODBC 2.0) 5 Varchar Kelime harbi sonlandırmak için kullanılan karakter veya karakterler; örneğin, karakter veri türleri için tek tırnak işareti ('); NULL, literal ek uygulanmayan veri tipleri için döner.
CREATE_PARAMS (ODBC 2.0) 6 Varchar Uygulamanın TYPE_NAME alanında dönen isim kullanıldığında parantez içinde belirtebileceği her parametreye karşılık gelen, virgülle ayrılmış anahtar kelimeler listesi. Listedeki anahtar kelimeler şunlardan herhangi biri olabilir: uzunluk, hassasiyet veya ölçek. Sözdiziminin gerektirdiği sırayla ortaya çıkarlar. Örneğin, DECIMAL için CREATE_PARAMS "hassasiyet, ölçek" olurdu; VARCHAR için CREATE_PARAMS "uzunluk" anlamına gelir. NULL, veri tipi tanımı için parametre yoksa döner; örneğin, INTEGER.

Sürücü, CREATE_PARAMS metni kullanıldığı ülke/bölgenin dilinde sağlar.
NULLABLE (ODBC 2.0) 7 Smallint NULL değil Veri türünün NULL değeri kabul edip etmediği:

SQL_NO_NULLS veri tipi NULL değerleri kabul etmiyorsa.

SQL_NULLABLE veri tipi NULL değerleri kabul ediyorsa.

SQL_NULLABLE_UNKNOWN sütunun NULL değerleri kabul edip etmediği bilinmiyorsa.
CASE_SENSITIVE (ODBC 2.0) 8 Smallint NULL değil Bir karakter veri tipinin toplu işlemlerde ve karşılaştırmalarda büyük harf duyarlı olup olmadığı:

SQL_TRUE veri tipi karakter veri tipi ise ve büyük harf hassasiyetliyse.

SQL_FALSE veri tipi karakter veri tipi değilse veya beve duyarlı değilse.
ARANANABILIR (ODBC 2.0) 9 Smallint NULL değil WHERE maddesinde veri tipi nasıl kullanılır:

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

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

SQL_PRED_BASIC sütun, LIKE hariç tüm karşılaştırma operatörleriyle bir WHERE cümlesinde kullanılabiliyorsa (karşılaştırma, nicelikli karşılaştırma, BETWEEN, DISTINCT, IN, MATCH ve UNIQUE). (Bu, ODBC 2'deki SQL_ALL_EXCEPT_LIKE değeriyle aynıdır. x.)

SQL_SEARCHABLE sütunun herhangi bir karşılaştırma operatörüyle bir WHERE cümlesinde kullanılabiliyor mu?
UNSIGNED_ATTRIBUTE (ODBC 2.0) 10 Smallint Veri türünün imzasız olup olmadığı:

SQL_TRUE veri türü imzasızsa.

SQL_FALSE veri tipi imzalanmışsa.

NULL, öznitelik veri tipine uygulanmazsa veya veri tipi sayısal değilse döner.
FIXED_PREC_SCALE (ODBC 2.0) 11 Smallint NULL değil Veri tipinin önceden tanımlanmış sabit hassasiyet ve ölçek (veri kaynağına özgü) sahip olup olmadığı, örneğin para veri tipi gibi:

SQL_TRUE önceden tanımlanmış sabit hassasiyet ve ölçek varsa.

SQL_FALSE önceden tanımlanmış sabit hassasiyet ve ölçek yoksa.
AUTO_UNIQUE_VALUE (ODBC 2.0) 12 Smallint Veri türünün otomatik artıp artmadığı:

SQL_TRUE veri tipi otomatik artıyorsa olabilir.

SQL_FALSE veri tipi otomatik artmıyorsa.

NULL, öznitelik veri tipine uygulanmazsa veya veri tipi sayısal değilse döner.

Bir uygulama, bu özniteliğe sahip bir sütuna değerler ekleyebilir, ancak genellikle sütundaki değerleri güncelleyemez.

Bir ekleme otomatik artırma sütununa dönüştürüldüğünde, ekleme zamanında sütuna benzersiz bir değer eklenir. Artış tanımlanmamıştır, ancak veri kaynağına özgüdür. Bir uygulama, otomatik artırma sütununun belirli bir noktadan başladığını veya belirli bir değer artışıyla arttığını varsaymamalıdır.
LOCAL_TYPE_NAME (ODBC 2.0) 13 Varchar Veri türünün veri kaynağına bağlı adının yerelleştirilmiş versiyonu. NULL, veri kaynağı tarafından desteklenmeyen yerel bir isim döndürülür. Bu isim yalnızca görüntüleme için, örneğin diyalog kutularında kullanılmak üzere tasarlanmıştır.
MINIMUM_SCALE (ODBC 2.0) 14 Smallint Veri kaynağındaki veri türünün minimum ölçeği. Bir veri türünün sabit bir ölçeği varsa, MINIMUM_SCALE ve MAXIMUM_SCALE sütunları her ikisi de bu değeri içerir. Örneğin, bir SQL_TYPE_TIMESTAMP sütununun kesirli saniyeler için sabit bir ölçeği olabilir. Ölçek uygulanamayan yerlerde NULL döner. Daha fazla bilgi için Ek D'deki Sütun Boyutu, Ondalık Rakamlar, Transfer Sekizli Uzunluğu ve Görüntü Boyutu bölümlerine bakınız: Veri Türleri.
MAXIMUM_SCALE (ODBC 2.0) 15 Smallint Veri kaynağındaki veri türünün maksimum ölçeği. Ölçek uygulanamayan yerlerde NULL döner. Eğer maksimum ölçek veri kaynağında ayrı tanımlanmamışsa, bunun yerine maksimum hassasiyetle aynı şekilde tanımlanmışsa, bu sütun COLUMN_SIZE sütunuyla aynı değeri içerir. Daha fazla bilgi için Ek D'deki Sütun Boyutu, Ondalık Rakamlar, Transfer Sekizli Uzunluğu ve Görüntü Boyutu bölümlerine bakınız: Veri Türleri.
SQL_DATA_TYPE (ODBC 3.0) 16 Smallint NOT NULL SQL veri türünün tanımlayıcının SQL_DESC_TYPE alanında görünen değeri. Bu sütun, aralık ve tarih saati veri türleri dışında DATA_TYPE sütunuyla aynıdır.

Aralık ve tarih saati veri türleri için, sonuç kümesindeki SQL_DATA_TYPE alanı SQL_INTERVAL veya SQL_DATETIME döndürür, SQL_DATETIME_SUB alanı ise belirli aralık veya tarih saati veri tipi için alt kodu döndürür. ( Bkz. Ek D: Veri Türleri.)
SQL_DATETIME_SUB (ODBC 3.0) 17 Smallint SQL_DATA_TYPE değeri SQL_DATETIME veya SQL_INTERVAL olduğunda, bu sütun tarih/aralık alt kodu içerir. Tarih ve aralık dışındaki veri türleri için bu alan NULL'dur.

Aralık veya tarih saati veri türleri için, sonuç kümesindeki SQL_DATA_TYPE alanı SQL_INTERVAL veya SQL_DATETIME döndürür, SQL_DATETIME_SUB alanı ise belirli aralık veya tarih saati veri tipi için alt kodu döndürür. ( Bkz. Ek D: Veri Türleri.)
NUM_PREC_RADIX (ODBC 3.0) 18 Integer Veri tipi yaklaşık sayısal tipse, bu sütun COLUMN_SIZE bir bit sayısını belirttiğini belirtmek için 2 değerini içerir. Kesin sayısal tipler için, bu sütun 10 değerini içerir ve COLUMN_SIZE'nin bir ondalık sayı belirttiğini belirtir. Aksi takdirde, bu sütun NULL'tır.
INTERVAL_PRECISION (ODBC 3.0) 19 Smallint Veri tipi aralıklı veri tipi ise, bu sütun aralık öncesi hassasiyetin değerini içerir. (Bkz. Ek D'deki Aralık Veri Tipi Hassasiyeti : Veri Türleri.) Aksi takdirde, bu sütun NULL olur.

Öznitelik bilgisi, veri türlerine veya sonuç kümesindeki belirli sütunlara uygulanabilir. SQLGetTypeInfo , veri tipleriyle ilişkili öznitelikler hakkında bilgi döndürür; SQLColAttribute , bir sonuç kümesindeki sütunlarla ilişkili öznitelikler hakkında bilgi döndürür.

Hakkında bilgi için Bkz:
Sonuç kümesindeki bir sütuna arabellek bağlama SQLBindCol İşlevi
Deyim işlemeyi iptal etme SQLCancel İşlevi
Sonuç kümesindeki bir sütunla ilgili bilgi döndürme SQLColAttribute Fonksiyonu
Veri bloğunu getirme veya sonuç kümesinde kaydırma SQLFetchScroll İşlevi
Tek bir satır veya veri bloğunu sadece ileri yönde almak SQLFetch İşlevi
Bir sürücü veya veri kaynağı hakkında bilgi döndürmek SQLGetInfo Fonksiyonu

Ayrıca Bkz.

ODBC API Referansı
ODBC Üst Bilgi Dosyaları