SQLColumns İşlevi

Uygunluk
Tanıtılan Sürüm: ODBC 1.0 Standartlar Uyumu: Open Group

Summary
SQLColumns , belirlenmiş tablolarda sütun adlarının listesini döndürür. Sürücü, bu bilgiyi belirlenen StatementHandle üzerinde sonuç seti olarak döndürür.

Syntax

  
SQLRETURN SQLColumns(  
     SQLHSTMT       StatementHandle,  
     SQLCHAR *      CatalogName,  
     SQLSMALLINT    NameLength1,  
     SQLCHAR *      SchemaName,  
     SQLSMALLINT    NameLength2,  
     SQLCHAR *      TableName,  
     SQLSMALLINT    NameLength3,  
     SQLCHAR *      ColumnName,  
     SQLSMALLINT    NameLength4);  

Arguments

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

Catalogname
[Giriş] Katalog adı. Bir sürücü bazı tablolar için katalogları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri alırsa, katalogları olmayan tabloları boş bir dizi ("") gösterir. CatalogName bir dizi arama deseni içeremez.

Note

Eğer SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, CatalogName tanımlayıcı olarak ele alınır ve durumu anlamlı değildir. Eğer SQL_FALSE ise, CatalogName sıradan bir argümandır; kelime kelimesi kelimesine ele alınır ve durumu önemlidir. Daha fazla bilgi için bkz. Katalog İşlevleri'ndeki Bağımsız Değişkenler.

NameLength1
[Giriş] *CatalogName'nin karakterlerindeki uzunluk.

Şema Adı
[Giriş] Şema adları için dizi arama örünü. Bir sürücü bazı tablolar için şemaları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri alırsa, boş bir dizi ("") şemasız tabloları gösterir.

Note

SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, SchemaName tanımlayıcı olarak kabul edilir ve durumu anlamlı değildir. Eğer SQL_FALSE ise, SchemaName bir desen değeri argümanıdır; kelime kelimesi kelimesine ele alınır ve durumu önemlidir.

NameLength2
[Giriş] *SchemaName'nin karakterlerindeki uzunluk.

Tablo Adı
[Giriş] Tablo adları için dizi arama deseni.

Note

Eğer SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, TableName tanımlayıcı olarak ele alınır ve durumu anlamlı değildir. Eğer SQL_FALSE ise, TableName bir desen değeri argümanıdır; kelime kelimesi kelimesine ele alınır ve durumu önemlidir.

NameLength3
[Giriş] *TableName'in karakterlerindeki uzunluk.

ColumnName
[Giriş] Sütun adları için dize arama düzeni.

Note

SQL_ATTR_METADATA_ID deyimi özniteliği SQL_TRUE olarak ayarlanırsa, ColumnName tanımlayıcı olarak değerlendirilir ve büyük/küçük harf önemli değildir. SQL_FALSE ise ColumnName bir desen değeri bağımsız değişkenidir; kelimenin tam anlamıyla ele alır ve durumu önemlidir.

NameLength4
[Giriş] ColumnName*karakterlerinde uzunluk.

İadeler

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ya da SQL_INVALID_HANDLE.

Diagnostics

SQLColumns 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, genellikle SQLColumn'lar tarafından duygulanan SQLSTATE değerlerini listelerler 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 Açıklama
01000 Genel uyarı Sürücüye özgü bilgilendirici ileti. (İş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'da bir imleç 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 İlişkili bağlantı bu işlevin 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ı.
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ı.
HY009 Geçersiz null işaretçi kullanımı SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmıştı, CatalogName argümanı null işaretçiydi ve SQL_CATALOG_NAME InfoType katalog adlarının desteklendiğini döndürdü.

(DM) SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmıştı ve SchemaName, TableName veya ColumnName argümanı bir null işaretçiydi.
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, SQLColumns 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.
HY090 Geçersiz dize veya arabellek uzunluğu (DM) İsim uzunluğu argümanlarından birinin değeri 0'dan küçüktü ancak SQL_NTS'ye eşit değildi.
İsim uzunluğu argümanlarından birinin değeri, ilgili katalog veya adın maksimum uzunluk değerini aşmıştır. Her kataloğun veya adın maksimum uzunluğu, SQLGetInfo çağrılarak InfoType değerleri ile elde edilebilir. ("Yorumlar" 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ınma durumu hakkında daha fazla bilgi için bkz. SQLEndTran İşlevi.
HYC00 İsteğe bağlı özellik uygulanmadı Bir katalog adı belirtilmiş ve sürücü veya veri kaynağı katalogları desteklememektedir.

Bir şema adı belirtilmiş ve sürücü ya da veri kaynağı şemaları desteklemiyor.

Şema adı, tablo adı veya sütun adı için bir dizi arama deseni belirtilmiş olup, veri kaynağı bu argümanlardan biri veya birkaçını arama desenlerini desteklemez.

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 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.

Comments

Bu fonksiyon genellikle ifade çalıştırmadan önce veri kaynağının kataloğundan bir tablo veya tablo sütunları hakkında bilgi almak için kullanılır. SQLColumns,SQLTables tarafından döndürülen tüm tür öğeler için veri almak için kullanılabilir. Temel tablolara ek olarak, bu durum görünümler, eşanlamlılar, sistem tabloları gibi şeyleri içerebilir (ancak bunlarla sınırlı değildir). Buna karşılık, SQLColAttribute ve SQLDescribeCol fonksiyonları bir sonuç kümesindeki sütunları tanımlar, SQLNumResultCols fonksiyonu ise bir sonuç kümesindeki sütun sayısını döndürür. Daha fazla bilgi için bkz. Katalog Verilerinin Kullanımları.

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.

SQLColumns sonuçları standart bir sonuç kümesi olarak, TABLE_CAT, TABLE_SCHEM, TABLE_NAME ve ORDINAL_POSITION sıralarına göre döndürür.

Note

Bir uygulama ODBC ile çalıştığında 2. x sürücüsü, sonuç kümesinde ORDINAL_POSITION sütun döner. Sonuç olarak, ODBC 2 ile çalışırken. x sürücüleri ile birlikte, SQLColumns tarafından dönen sütun listesindeki sütunların sırası, uygulama o tablodaki tüm sütunlarda SELECT ifadesi uyguladığında dönen sütunların sırasıyla mutlaka aynı olmayabilir.

Note

SQLColumns tüm sütunları döndürmeyebilir. Örneğin, bir sürücü Oracle ROWID gibi sözde sütunlar hakkında bilgi döndürmeyebilir. Uygulamalar, SQLColumns tarafından döndürülse de herhangi bir geçerli sütunu kullanabilir.

SQLStatistics tarafından döndürilebilen bazı sütunlar, SQLColumns tarafından döndürülmez. Örneğin, SQLColumns , bir ifade veya filtre üzerinde oluşturulan bir indeksteki sütunları döndürmez; örneğin SALARY + BENEFITS veya DEPT = 0012.

VARCHAR sütunlarının uzunlukları tabloda gösterilmemiştir; Gerçek uzunluklar veri kaynağına bağlıdır. TABLE_CAT, TABLE_SCHEM, TABLE_NAME ve COLUMN_NAME sütunlarının gerçek uzunluklarını belirlemek için bir uygulama, SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN ve SQL_MAX_COLUMN_NAME_LEN seçenekleriyle SQLGetInfo çağırabilir.

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
TABLE_QUALIFIER TABLE_CAT
TABLO_SAHİBİ TABLO_ŞEMASI
KESİNLİK KOLON_BOYUTU
Uzunluk BUFFER UZUNLUĞU
ÖLÇEK Ondalık Basamaklar
TABAN SAYI_KESİN_TABAN

ODBC 3 için SQLColumns tarafından döndürülen sonuç kümesine aşağıdaki sütunlar eklenmiştir. X:

CHAR_OCTET_LENGTH (Karakter Oktet Uzunluğu)
COLUMN_DEF

NULL_OLABİLİR
SIRA_POZİSYONU

SQL_DATA_TYPE (SQL veri tipi)
SQL_DATETIME_SUB

Aşağıdaki tabloda sonuç kümesindeki sütunlar listelenir. 18. sütun (IS_NULLABLE) ö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 elde etmelidir. Daha fazla bilgi için bkz. Katalog İşlevleri Tarafından Döndürülen Veriler.

Sütun adı Column

number
Veri türü Comments
TABLE_CAT (ODBC 1.0) 1 Varchar Katalog adı; Veri kaynağına uygulanmıyorsa NULL. Bir sürücü bazı tablolar için katalogları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri aldığında, katalogları olmayan tablolar için boş bir dizi ("") döner.
TABLE_SCHEM (ODBC 1.0) 2 Varchar Şema adı; Veri kaynağına uygulanmıyorsa NULL. Bir sürücü bazı tablolar için şemaları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri alırsa, şema olmayan tablolar için boş bir diziyi ("") döndürür.
TABLE_NAME (ODBC 1.0) 3 Varchar NULL değil Tablo adı.
COLUMN_NAME (ODBC 1.0) 4 Varchar NULL değil Sütun adı. Sürücü, adı olmayan bir sütun için boş bir diziyi döndürür.
DATA_TYPE (ODBC 1.0) 5 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 ve aralık veri türleri için, bu sütun SQL_DATETIME veya SQL_INTERVAL gibi kısa olmayan veri tipi yerine SQL_TYPE_DATE veya SQL_INTERVAL_YEAR_TO_MONTH gibi kısa veri tipini 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.

ODBC 3 için veri türleri geri döndü. x ve ODBC 2. X uygulamaları farklı olabilir. Daha fazla bilgi için bkz . Geriye Dönük Uyumluluk ve Standartlar Uyumluluğu.
TYPE_NAME (ODBC 1.0) 6 Varchar NULL değil Veri kaynağına bağlı veri tipi adı; örneğin, "CHAR", "VARCHAR", "MONEY", "LONG VARBINAR" veya "CHAR ( ) FOR BIT VERI" gibi.
COLUMN_SIZE (ODBC 1.0) 7 Integer Eğer DATA_TYPE SQL_CHAR veya SQL_VARCHAR ise, bu sütun sütunun karakterlerindeki maksimum uzunluğu içerir. Tarih saati veri türleri için, değer karakterlere dönüştürüldüğünde görüntülenmek için gereken toplam karakter sayısıdır. Sayısal veri tipleri için, bu ya toplam rakam sayısı ya da sütunda izin verilen toplam bit sayısıdır, NUM_PREC_RADIX sütununa göre. 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). 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.
BUFFER_LENGTH (ODBC 1.0) 8 Integer SQLGetData, SQLFetch veya SQLFetchScroll işlemiyle aktarılan verilerin bayt cinsinden uzunluğu SQL_C_DEFAULT belirtilmişse. Sayısal veriler için, bu boyut veri kaynağında depolanan veri boyutundan farklı olabilir. Bu değer, karakter verisi için COLUMN_SIZE sütunundan farklı olabilir. Uzunluk hakkında daha fazla bilgi için Ek D'deki Sütun Boyutu, Ondalık Rakamlar, Aktarım Sekizlik Uzunluğu ve Ekran Boyutu bölümlerine bakınız: Veri Türleri.
DECIMAL_DIGITS (ODBC 1.0) 9 Smallint Ondalık noktanın sağındaki toplam anlamlı rakamların sayısı. SQL_TYPE_TIME ve SQL_TYPE_TIMESTAMP için, bu sütun kesirli saniye bileşenindeki rakam sayısını içerir. Diğer veri türleri için bu, veri kaynağındaki sütunun ondalık rakamlarıdır. Zaman bileşeni içeren aralık veri türleri için, bu sütun ondalık noktanın sağındaki rakam sayısını (kesirli saniyeler) içerir. Zaman bileşeni içermeyen aralık veri türleri için bu sütun 0'dır. Ondalık rakamlar hakkında daha fazla bilgi için, Ek D'deki Column Size, Desimal Digits, Transfer Octet Length ve Display Size (Ek D: Veri Türleri) bölümlerine bakınız. NULL, DECIMAL_DIGITS geçerli olmayan veri tipleri için döner.
NUM_PREC_RADIX (ODBC 1.0) 10 Smallint Sayısal veri türleri için 10 veya 2. Eğer 10 ise, COLUMN_SIZE ve DECIMAL_DIGITS değerleri sütun için izin verilen ondalık rakamlı sayısını verir. Örneğin, DECIMAL(12,5) sütunu 10 NUM_PREC_RADIX, 12 COLUMN_SIZE ve 5 DECIMAL_DIGITS döndürür; FLOAT sütunu 10 NUM_PREC_RADIX, 15 COLUMN_SIZE ve NULL DECIMAL_DIGITS döndürebilir.

Eğer 2 ise, COLUMN_SIZE ve DECIMAL_DIGITS değerleri sütunda izin verilen bit sayısını verir. Örneğin, bir FLOAT sütunu RADIX'i 2, COLUMN_SIZE 53 ve DECIMAL_DIGITS NULL'u döndürebilir.

NUM_PREC_RADIX geçerli olmadığı veri türleri için NULL döndürülür.
NULLABLE (ODBC 1.0) 11 Smallint NULL değil SQL_NO_NULLS sütunun NULL değerleri içeremezse bu sorun olabilir.

SQL_NULLABLE sütun NULL değerleri kabul ediyorsa.

SQL_NULLABLE_UNKNOWN sütunun NULL değerleri kabul edip etmediği bilinmiyorsa.

Bu sütun için döndürülen değer, IS_NULLABLE sütununun geri dönen değerinden farklıdır. NULLABLE sütun, bir sütunun NULL'ları kabul edebileceğini kesin olarak gösterir, ancak bir sütunun NULL'ları kabul etmediğini kesin olarak belirtemez. IS_NULLABLE sütunu, bir sütunun NULL'ları kabul edemeyeceğini kesin olarak gösterir, ancak bir sütunun NULL'ları kabul ettiğini kesin olarak belirtemez.
KONUŞMALAR (ODBC 1.0) 12 Varchar Sütunun bir tanımı.
COLUMN_DEF (ODBC 3.0) 13 Varchar Sütunun varsayılan değeri. Bu sütundaki değer, tırnak içinde yer almışsa bir dizi olarak yorumlanmalıdır.

Varsayılan değer olarak NULL belirtildiyse, bu sütun null sözcüğüdür, tırnak içine alınmaz. Varsayılan değer kesinti olmadan gösterilemiyorsa, bu sütunda tek tırnak işareti olmadan TUNCATED bulunur. Varsayılan değer belirtilmediyse, bu sütun NULL olur.

COLUMN_DEF değeri, TRUNCATED değerini içermesi dışında yeni bir sütun tanımı oluştururken kullanılabilir.
SQL_DATA_TYPE (ODBC 3.0) 14 Smallint NULL değil SQL veri tipi, IRD'deki SQL_DESC_TYPE kayıt alanında göründüğü gibi. Bu bir ODBC SQL veri türü veya sürücüye özgü bir SQL veri türü olabilir. Tarih saat ve aralık veri türleri dışında bu sütun DATA_TYPE sütunuyla aynıdır. Bu sütun, tarih ve aralık veri tipleri için kısa veri tipi (örneğin SQL_TYPE_DATE veya SQL_INTERVAL_YEAR_TO_MONTH) yerine SQL_DATETIME veya SQL_INTERVAL gibi kısa olmayan veri tipini döndürür. Bu sütun SQL_DATETIME veya SQL_INTERVAL döndürüyorsa, SQL_DATETIME_SUB sütunundan belirli veri türü belirlenebilir. 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.

ODBC 3 için veri türleri geri döndü. x ve ODBC 2. X uygulamaları farklı olabilir. Daha fazla bilgi için bkz . Geriye Dönük Uyumluluk ve Standartlar Uyumluluğu.
SQL_DATETIME_SUB (ODBC 3.0) 15 Smallint Tarih saat ve aralık veri türleri için alt tür kodu. Diğer veri türleri için bu sütun null döndürür. Tarih saati ve aralık alt kodları hakkında daha fazla bilgi için SQLSetDescField içindeki "SQL_DESC_DATETIME_INTERVAL_CODE" bölümüne bakınız.
CHAR_OCTET_LENGTH (ODBC 3.0) 16 Integer Bir karakterin veya ikili veri türü sütununun bayt cinsinden uzunluk üst sınırı. Diğer tüm veri türleri için bu sütun null döndürür.
ORDINAL_POSITION (ODBC 3.0) 17 Tamsayı NULL değil Tablodaki sütunun sırasal konumu. Tablodaki ilk sütun 1 numaradır.
IS_NULLABLE (ODBC 3.0) 18 Varchar SütunDA NUL'ler yoksa "HAYIR".

"EVET" sütunda NULL'lar varsa.

Bu sütun, nullability bilinmiyorsa sıfır uzunlukta bir dizi döndürür.

ISO kuralları sıfırlanabilirliği belirlemek için uygulanır. ISO SQL uyumlu DBMS boş bir dize döndüremez.

Bu sütun için döndürülen değer, NULLABLE sütununun geri dönen değerinden farklıdır. (NULLABLE sütununun açıklamasına bakın.)

Kod Örneği

Aşağıdaki örnekte, bir uygulama SQLColumns tarafından döndürülen sonuç kümesi için tamponlar ilan eder. SQLColumns'u çağırarak EMPLOYEE tablosundaki her sütunu tanımlayan bir sonuç kümesini döndürür. Daha sonra SQLBindCol'u çağırarak sonuç kümesindeki sütunları buffer'lara bağlar. Son olarak, uygulama her veri satırını SQLFetch ile alır ve işler.

// SQLColumns_Function.cpp  
// compile with: ODBC32.lib  
#include <windows.h>  
#include <sqlext.h>  
#define STR_LEN 128 + 1  
#define REM_LEN 254 + 1  
  
// Declare buffers for result set data  
SQLCHAR szSchema[STR_LEN];  
SQLCHAR szCatalog[STR_LEN];  
SQLCHAR szColumnName[STR_LEN];  
SQLCHAR szTableName[STR_LEN];  
SQLCHAR szTypeName[STR_LEN];  
SQLCHAR szRemarks[REM_LEN];  
SQLCHAR szColumnDefault[STR_LEN];  
SQLCHAR szIsNullable[STR_LEN];  
  
SQLINTEGER ColumnSize;  
SQLINTEGER BufferLength;  
SQLINTEGER CharOctetLength;  
SQLINTEGER OrdinalPosition;  
  
SQLSMALLINT DataType;  
SQLSMALLINT DecimalDigits;  
SQLSMALLINT NumPrecRadix;  
SQLSMALLINT Nullable;  
SQLSMALLINT SQLDataType;  
SQLSMALLINT DatetimeSubtypeCode;  
  
SQLHSTMT hstmt = NULL;  
  
// Declare buffers for bytes available to return  
SQLINTEGER cbCatalog;  
SQLINTEGER cbSchema;  
SQLINTEGER cbTableName;  
SQLINTEGER cbColumnName;  
SQLINTEGER cbDataType;  
SQLINTEGER cbTypeName;  
SQLINTEGER cbColumnSize;  
SQLLEN cbBufferLength;  
SQLINTEGER cbDecimalDigits;  
SQLINTEGER cbNumPrecRadix;  
SQLINTEGER cbNullable;  
SQLINTEGER cbRemarks;  
SQLINTEGER cbColumnDefault;  
SQLINTEGER cbSQLDataType;  
SQLINTEGER cbDatetimeSubtypeCode;  
SQLINTEGER cbCharOctetLength;  
SQLINTEGER cbOrdinalPosition;  
SQLINTEGER cbIsNullable;  
  
int main() {  
   SQLHENV henv;  
   SQLHDBC hdbc;  
   SQLHSTMT hstmt = 0;  
   SQLRETURN retcode;  
  
   retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);  
   retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);   
   retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);   
   retcode = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);  
   retcode = SQLConnect(hdbc, (SQLCHAR*) "Northwind", SQL_NTS, (SQLCHAR*) NULL, 0, NULL, 0);  
   retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);  
   retcode = SQLColumns(hstmt, NULL, 0, NULL, 0, (SQLCHAR*)"CUSTOMERS", SQL_NTS, NULL, 0);  
  
   if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
      // Bind columns in result set to buffers  
      SQLBindCol(hstmt, 1, SQL_C_CHAR, szCatalog, STR_LEN,&cbCatalog);  
      SQLBindCol(hstmt, 2, SQL_C_CHAR, szSchema, STR_LEN, &cbSchema);  
      SQLBindCol(hstmt, 3, SQL_C_CHAR, szTableName, STR_LEN,&cbTableName);  
      SQLBindCol(hstmt, 4, SQL_C_CHAR, szColumnName, STR_LEN, &cbColumnName);  
      SQLBindCol(hstmt, 5, SQL_C_SSHORT, &DataType, 0, &cbDataType);  
      SQLBindCol(hstmt, 6, SQL_C_CHAR, szTypeName, STR_LEN, &cbTypeName);  
      SQLBindCol(hstmt, 7, SQL_C_SLONG, &ColumnSize, 0, &cbColumnSize);  
      SQLBindCol(hstmt, 8, SQL_C_SLONG, &BufferLength, 0, &cbBufferLength);  
      SQLBindCol(hstmt, 9, SQL_C_SSHORT, &DecimalDigits, 0, &cbDecimalDigits);  
      SQLBindCol(hstmt, 10, SQL_C_SSHORT, &NumPrecRadix, 0, &cbNumPrecRadix);  
      SQLBindCol(hstmt, 11, SQL_C_SSHORT, &Nullable, 0, &cbNullable);  
      SQLBindCol(hstmt, 12, SQL_C_CHAR, szRemarks, REM_LEN, &cbRemarks);  
      SQLBindCol(hstmt, 13, SQL_C_CHAR, szColumnDefault, STR_LEN, &cbColumnDefault);  
      SQLBindCol(hstmt, 14, SQL_C_SSHORT, &SQLDataType, 0, &cbSQLDataType);  
      SQLBindCol(hstmt, 15, SQL_C_SSHORT, &DatetimeSubtypeCode, 0, &cbDatetimeSubtypeCode);  
      SQLBindCol(hstmt, 16, SQL_C_SLONG, &CharOctetLength, 0, &cbCharOctetLength);  
      SQLBindCol(hstmt, 17, SQL_C_SLONG, &OrdinalPosition, 0, &cbOrdinalPosition);  
      SQLBindCol(hstmt, 18, SQL_C_CHAR, szIsNullable, STR_LEN, &cbIsNullable);  
  
      while (SQL_SUCCESS == retcode) {  
         retcode = SQLFetch(hstmt);  
         /*  
         if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)  
            0;   // show_error();  
         if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)  
            0;   // Process fetched data  
         else  
            break;  
        */  
      }  
   }  
}  
Hakkında bilgi için Bkz:
Sonuç kümesindeki bir sütuna arabellek bağlama SQLBindCol İşlevi
Deyim işlemeyi iptal etme SQLCancel İşlevi
Bir sütun veya sütunlar için ayrıcalıkların geri getirilmesi SQLColumnPrivileges Function
Veri bloğunu getirme veya sonuç kümesinde kaydırma SQLFetchScroll İşlevi
Birden çok veri satırı getirme SQLFetch İşlevi
Bir satırı benzersiz şekilde tanımlayan sütunlar veya bir işlem tarafından otomatik olarak güncellenen sütunlar SQLSpecialColumns Fonksiyonu
Tablo istatistikleri ve indeksleri geri getirilmesi SQLStatistics Fonksiyonu
Bir veri kaynağında tablo listesini döndürmek SQLTables Fonksiyonu
Bir tablo veya tablolar için ayrıcalıkların geri verilmesi SQLTablePrivileges Function