Aracılığıyla paylaş


SQLProcedureColumns İşlevi

uyumluluk
Kullanıma Sunulan Sürüm: ODBC 1.0 Standartları Uyumluluğu: ODBC

Özeti
SQLProcedureColumns , giriş ve çıkış parametrelerinin listesinin yanı sıra belirtilen yordamlar için sonuç kümesini oluşturan sütunları döndürür. Sürücü, belirtilen deyimde ayarlanan bir sonuç olarak bilgileri döndürür.

Sözdizimi

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

Bağımsız değişken

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

CatalogName
[Giriş] Yordam kataloğu adı. Sürücü bazı yordamlar için katalogları destekliyorsa ancak diğerleri için desteklemiyorsa (örneğin, sürücü farklı DBMS'lerden veri aldığında), boş bir dize (""), katalogları olmayan yordamları belirtir. CatalogName dize arama deseni içeremez.

SQL_ATTR_METADATA_ID deyimi özniteliği SQL_TRUE olarak ayarlanırsa, CatalogName tanımlayıcı olarak değerlendirilir ve büyük/küçük harf önemli değildir. SQL_FALSE ise, CatalogName sıradan bir bağımsız değişkendir; kelimenin tam anlamıyla ele alır ve durumu önemlidir. Daha fazla bilgi için bkz.Katalog İşlevleri'nde bağımsız değişkenleri .

NameLength1
[Giriş] *CatalogNamekarakterlerinde uzunluk.

SchemaName
[Giriş] Yordam şeması adları için dize arama düzeni. Sürücü bazı yordamlar için şemaları destekliyorsa ancak diğerleri için desteklemiyorsa (örneğin, sürücü farklı DBMS'lerden veri aldığında), boş bir dize (""), şemaları olmayan yordamları belirtir.

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

NameLength2
[Giriş] SchemaName*karakterlerinde uzunluk.

ProcName
[Giriş] Yordam adları için dize arama düzeni.

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

NameLength3
[Giriş] *ProcNamekarakterlerinde uzunluk.

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

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.

Döndürür

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR veya SQL_INVALID_HANDLE.

Tanılama

SQLProcedureColumns SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, SQL_HANDLE_STMT HandleType ve StatementHandleHandle ile SQLGetDiagRec çağrılarak ilişkili bir SQLSTATE değeri elde edilebilir. Aşağıdaki tabloda, SQLProcedureColumns tarafından yaygın olarak döndürülen SQLSTATE değerleri listelenmiş ve her biri bu işlev bağlamında açıklanmaktadır; "(DM)" gösterimi, Sürücü Yöneticisi tarafından döndürülen SQLSTATEs açıklamalarından önce gelir. Aksi belirtilmediği sürece, her SQLSTATE değeriyle ilişkili dönüş kodu SQL_ERROR.

SQLSTATE Hata 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üzerinde bir imleç açıktı ve SQLFetch veya SQLFetchScroll çağrıldı. SQLFetch veya SQLFetchScroll SQL_NO_DATA döndürmediyse bu hata 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 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ğindeki SQLError 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 StatementHandleiçin zaman uyumsuz işleme etkinleştirildi. İşlev çağrıldı ve yürütmeyi tamamlamadan önce sqlcancel veya SQLCancelHandle StatementHandleüzerinde çağrıldı. Ardından işlev StatementHandleüzerinde yeniden çağrıldı.

İşlev çağrıldı ve yürütmeyi tamamlamadan önce SQLCancel
veya SQLCancelHandle , çok iş parçacıklı bir uygulamadaki farklı bir iş parçacığından StatementHandle çağrıldı.
HY009 Geçersiz null işaretçi kullanımı SQL_ATTR_METADATA_ID deyimi özniteliği SQL_TRUE olarak ayarlanmış, CatalogName bağımsız değişkeni null işaretçiydi ve SQL_CATALOG_NAME InfoType katalog adlarının desteklendiğini döndürür.

(DM) SQL_ATTR_METADATA_ID deyimi özniteliği SQL_TRUE olarak ayarlanmış ve SchemaName , ProcNameveya ColumnName bağımsız değişkeni null işaretçiydi.
HY010 İşlev dizisi hatası (DM) StatementHandleile ilişkili bağlantı tanıtıcısı için zaman uyumsuz olarak yürütülen bir işlev çağrıldı. SQLProcedureColumns işlevi çağrıldığında bu zaman uyumsuz işlev hala yürütülüyordu.

(DM) SQLExecute, SQLExecDirectveya 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, SQLBulkOperationsveya 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ı.
HY090 Geçersiz dize veya arabellek uzunluğu (DM) Ad uzunluğu bağımsız değişkenlerinden birinin değeri 0'dan küçüktür ancak SQL_NTS eşit değildir.

Ad uzunluğu bağımsız değişkenlerinden birinin değeri, ilgili katalog, şema, yordam veya sütun adı için uzunluk üst sınırını aştı.
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 alma durumu hakkında daha fazla bilgi için bkz. SQLEndTran İşlevi.
HYC00 İsteğe bağlı özellik uygulanmadı Yordam kataloğu belirtildi ve sürücü veya veri kaynağı katalogları desteklemiyor.

Bir yordam şeması belirtildi ve sürücü veya veri kaynağı şemaları desteklemiyor.

Yordam şeması, yordam adı veya sütun adı için bir dize arama deseni belirtildi ve veri kaynağı bu bağımsız değişkenlerden biri veya daha fazlası için arama desenlerini desteklemiyor.

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 zaman aşımı süresi doldu. Zaman aşımı süresi SQLSetStmtAttrSQL_ATTR_QUERY_TIMEOUT üzerinden 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 SQLSetConnectAttrSQL_ATTR_CONNECTION_TIMEOUT üzerinden 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 etkinse, SQLCompleteAsync işlem sonrası işlem yapmak ve işlemi tamamlamak için tanıtıcıda çağrılmalıdır.

Yorum

Bu işlev genellikle yordam parametreleri ve varsa yordam tarafından döndürülen sonuç kümesini veya kümelerini oluşturan sütunlar hakkındaki bilgileri almak için deyimi yürütmeden önce kullanılır. Daha fazla bilgi için bkz. Yordamlar.

Not

SQLProcedureColumns bir yordam tarafından kullanılan tüm sütunları döndürmeyebilir. Örneğin, bir sürücü yalnızca bir yordam tarafından kullanılan parametrelerle ilgili bilgileri döndürebilir, oluşturduğu sonuç kümesindeki sütunları döndürmeyebilir.

SchemaName, ProcNameve ColumnName bağımsız değişkenleri arama desenlerini kabul eder. Geçerli arama desenleri hakkında daha fazla bilgi için bkz. Desen Değeri Bağımsız Değişkenleri.

Not

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.

sqlprocedureColumns sonuçları PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME ve COLUMN_TYPE göre sıralanmış standart bir sonuç kümesi olarak döndürür. Her yordam için sütun adları şu sırayla döndürülür: dönüş değerinin adı, yordam çağrısındaki her parametrenin adları (çağrı sırasına göre) ve ardından yordam tarafından döndürülen sonuç kümesindeki her sütunun adları (sütun sırasına göre).

Uygulamalar, sonuç kümesinin sonuna göre sürücüye özgü sütunları bağlamalıdır. Daha fazla bilgi için bkz. Katalog İşlevleri tarafından Döndürülen Veriler.

PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_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_PROCEDURE_NAME_LEN ve SQL_MAX_COLUMN_NAME_LEN seçenekleriyle SQLGetInfo çağırabilir.

Odbc 3 için aşağıdaki sütunlar yeniden adlandırıldı.x. Uygulamalar sütun numarasına göre bağlandığından, sütun adı değişiklikleri geriye dönük uyumluluğu etkilemez.

ODBC 2.0 sütunu ODBC 3.x sütunu
PROCEDURE_QUALIFIER PROCEDURE_CAT
YORDAM _OWNER PROCEDURE_SCHEM
KESİNLİK COLUMN_SIZE
UZUNLUK BUFFER_LENGTH
ÖLÇEKLEMEK DECIMAL_DIGITS
KÖK NUM_PREC_RADIX

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

  • COLUMN_DEF

  • DATETIME_CODE

  • CHAR_OCTET_LENGTH

  • ORDINAL_POSITION

  • IS_NULLABLE

Aşağıdaki tabloda sonuç kümesindeki sütunlar listelenir. 19 (IS_NULLABLE) sütununun ötesindeki ek sütunlar sürücü tarafından tanımlanabilir. Bir uygulama, açık bir sıra konumu belirtmek yerine sonuç kümesinin sonundan geriye doğru 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ı Sütun numarası Veri tipi Yorum
PROCEDURE_CAT (ODBC 2.0) 1 Varchar Yordam kataloğu adı; Veri kaynağı için geçerli değilse NULL. Sürücü bazı yordamlar için katalogları destekliyorsa ancak diğerleri için desteklemiyorsa (örneğin, sürücü farklı DBMS'lerden veri aldığında), katalogları olmayan yordamlar için boş bir dize ("") döndürür.
PROCEDURE_SCHEM (ODBC 2.0) 2 Varchar Yordam şeması adı; Veri kaynağı için geçerli değilse NULL. Sürücü bazı yordamlar için şemaları destekliyorsa ancak diğerleri için desteklemiyorsa (örneğin, sürücü farklı DBMS'lerden veri aldığında), şemaları olmayan yordamlar için boş bir dize ("") döndürür.
PROCEDURE_NAME (ODBC 2.0) 3 Varchar değil NULL Yordam adı. Adı olmayan bir yordam için boş bir dize döndürülür.
COLUMN_NAME (ODBC 2.0) 4 Varchar değil NULL Yordam sütun adı. Sürücü, adı olmayan bir yordam sütunu için boş bir dize döndürür.
COLUMN_TYPE (ODBC 2.0) 5 Smallint not NULL Yordam sütununu parametre veya sonuç kümesi sütunu olarak tanımlar:

SQL_PARAM_TYPE_UNKNOWN: Yordam sütunu, türü bilinmeyen bir parametredir. (ODBC 1.0)

SQL_PARAM_INPUT: Yordam sütunu bir giriş parametresidir. (ODBC 1.0)

SQL_PARAM_INPUT_OUTPUT: Yordam sütunu bir giriş/çıkış parametresidir. (ODBC 1.0)

SQL_PARAM_OUTPUT: Yordam sütunu bir çıkış parametresidir. (ODBC 2.0)

SQL_RETURN_VALUE: Yordam sütunu, yordamın dönüş değeridir. (ODBC 2.0)

SQL_RESULT_COL: Yordam sütunu bir sonuç kümesi sütunudur. (ODBC 1.0)
DATA_TYPE (ODBC 2.0) 6 Smallint not NULL SQL veri türü. 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 için bu sütun kısa veri türlerini (ö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 Türleri'nde sql veri türleri bakın. Sürücüye özgü SQL veri türleri hakkında bilgi için sürücünün belgelerine bakın.
TYPE_NAME (ODBC 2.0) 7 Varchar değil NULL Veri kaynağına bağımlı veri türü adı; örneğin, "CHAR", "VARCHAR", "MONEY", "LONG VARBINARY" veya "CHAR ( ) FOR BIT DATA".
COLUMN_SIZE (ODBC 2.0) 8 Tam sayı Veri kaynağındaki yordam sütununun sütun boyutu. Sütun boyutunun geçerli olmadığı veri türleri için NULL döndürülür. Duyarlılıkla ilgili daha fazla bilgi için ek D: Veri Türleri'nde Sütun Boyutu, Ondalık Basamaklar, Sekizli Uzunluğu Aktar ve Görüntü Boyutu bölümüne bakın.
BUFFER_LENGTH (ODBC 2.0) 9 Tam sayı SQLGetData veya SQL_C_DEFAULT belirtilirse SQLFetch işlemine aktarılan verilerin bayt cinsinden uzunluğu. Sayısal veriler için bu boyut, veri kaynağında depolanan verilerin boyutundan farklı olabilir. Daha fazla bilgi için Ek D: Veri Türleri'nde Sütun Boyutu, Ondalık Basamaklar, Sekizli Uzunluğu Aktar ve Görüntüleme Boyutubölümüne bakın.
DECIMAL_DIGITS (ODBC 2.0) 10 Smallint Veri kaynağındaki yordam sütununun ondalık basamakları. Ondalık basamakların geçerli olmadığı veri türleri için NULL döndürülür. Ondalık basamaklar hakkında daha fazla bilgi için Ek D: Veri Türleri'nde Sütun Boyutu, Ondalık Basamaklar, Sekizli Uzunluğu Aktar ve Görüntüleme Boyutubölümüne bakın.
NUM_PREC_RADIX (ODBC 2.0) 11 Smallint Sayısal veri türleri için 10 veya 2.

10 ise, COLUMN_SIZE ve DECIMAL_DIGITS değerleri sütun için izin verilen ondalık basamak 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.

2 ise, COLUMN_SIZE ve DECIMAL_DIGITS değerleri sütunda izin verilen bit sayısını verir. Örneğin, FLOAT sütunu 2 NUM_PREC_RADIX, 53 COLUMN_SIZE ve NULL DECIMAL_DIGITS döndürebilir.

NUM_PREC_RADIX geçerli olmadığı veri türleri için NULL döndürülür.
NULL ATANABILIR (ODBC 2.0) 12 Smallint not NULL Yordam sütununun NULL değeri kabul edip etmediği:

SQL_NO_NULLS: Yordam sütunu NULL değerleri kabul etmez.

SQL_NULLABLE: Yordam sütunu NULL değerleri kabul eder.

SQL_NULLABLE_UNKNOWN: Yordam sütununun NULL değerleri kabul eder mi bilinmez.
AÇıKLAMALAR (ODBC 2.0) 13 Varchar Yordam sütununun açıklaması.
COLUMN_DEF (ODBC 3.0) 14 Varchar Sütunun varsayılan değeri.

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 kesme olmadan temsil edilemiyorsa, bu sütun tek tırnak içine alınmadan KESİLEN değerini içerir. 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) 15 Smallint not NULL Tanımlayıcının SQL_DESC_TYPE alanında göründüğü gibi SQL veri türünün değeri. Tarih saat ve aralık veri türleri dışında bu sütun DATA_TYPE sütunuyla aynıdır.

Tarih saat ve aralık veri türleri için, sonuç kümesindeki SQL_DATA_TYPE alanı SQL_INTERVAL veya SQL_DATETIME döndürür ve SQL_DATETIME_SUB alanı belirli aralık veya tarih saat veri türü için alt kodu döndürür. (Bkz. Ek D: Veri Türleri.)
SQL_DATETIME_SUB (ODBC 3.0) 16 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.
CHAR_OCTET_LENGTH (ODBC 3.0) 17 Tam sayı 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) 18 Tamsayı NULL değil Giriş ve çıkış parametreleri için, parametrenin yordam tanımındaki sıralı konumu (parametre sırasını artırarak, 1'den başlayarak). Bir dönüş değeri için (varsa), 0 döndürülür. Sonuç kümesi sütunları için, sonuç kümesindeki sütunun sıralı konumu ve sonuç kümesindeki ilk sütun 1 sayısıdır. Birden çok sonuç kümesi varsa, sütun sıra konumları sürücüye özgü bir şekilde döndürülür.
IS_NULLABLE (ODBC 3.0) 19 Varchar SütunDA NUL'ler yoksa "HAYIR".

SütunDA DLL'ler bulunabiliyorsa "EVET".

Null atanabilirlik bilinmiyorsa bu sütun sıfır uzunluklu bir dize döndürür.

Null atanabilirliği belirlemek için ISO kurallarına uyulur. ISO SQL uyumlu DBMS boş bir dize döndüremez.

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

Kod Örneği

Bkz. Yordam Çağrıları.

Hakkında bilgi için Görmek
Sonuç kümesindeki bir sütuna arabellek bağlama SQLBindCol İşlevi
Deyim işlemeyi iptal etme SQLCancel İşlevi
Tek bir satır veya veri bloğunu yalnızca ileri yönde getirme SQLFetch İşlevi
Veri bloğunu getirme veya sonuç kümesinde kaydırma SQLFetchScroll İşlevi
Veri kaynağındaki yordamların listesini döndürme SQLProcedures İşlevi

Ayrıca Bkz.

ODBC API Başvurusu
ODBC Üst Bilgi Dosyaları