SQLSetDescRec İşlevi
uyumluluk
Sunulan Sürüm: ODBC 3.0 Standartları Uyumluluğu: ISO 92
Özeti
SQLSetDescRec işlevi, bir sütun veya parametre verilerine bağlı veri türünü ve arabelleği etkileyen birden çok tanımlayıcı alanı ayarlar.
Sözdizimi
SQLRETURN SQLSetDescRec(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT Type,
SQLSMALLINT SubType,
SQLLEN Length,
SQLSMALLINT Precision,
SQLSMALLINT Scale,
SQLPOINTER DataPtr,
SQLLEN * StringLengthPtr,
SQLLEN * IndicatorPtr);
Bağımsız değişken
DescriptorHandle
[Giriş] Tanımlayıcı tutamacı. Bu bir IRD tutamacı olmamalıdır.
RecNumber
[Giriş] Ayarlanacak alanları içeren tanımlayıcı kaydını gösterir. Tanımlayıcı kayıtları 0'dan numaralandırılır ve kayıt numarası 0 yer işareti kaydıdır. Bu bağımsız değişken 0'a eşit veya 0'dan büyük olmalıdır.
RecNumber değeri SQL_DESC_COUNT değerinden büyükse, SQL_DESC_COUNTis RecNumberdeğerine değiştirildi.
Tür
[Giriş] Tanımlayıcı kaydı için SQL_DESC_TYPE alanının ayarlanacağı değer.
Alt Tür
[Giriş] Türü SQL_DATETIME veya SQL_INTERVAL olan kayıtlar için bu, SQL_DESC_DATETIME_INTERVAL_CODE alanının ayarlanacağı değerdir.
Uzunluğu
[Giriş] Tanımlayıcı kaydı için SQL_DESC_OCTET_LENGTH alanının ayarlanacağı değer.
Duyarlık
[Giriş] Tanımlayıcı kaydı için SQL_DESC_PRECISION alanının ayarlanacağı değer.
Ölçeklendirme
[Giriş] Tanımlayıcı kaydı için SQL_DESC_SCALE alanının ayarlanacağı değer.
dataptr
[Ertelenen Giriş veya Çıkış] Tanımlayıcı kaydı için SQL_DESC_DATA_PTR alanının ayarlanacağı değer.
DataPtr null işaretçiye ayarlanabilir.
DataPtr bağımsız değişkeni, SQL_DESC_DATA_PTR alanını null işaretçi olarak ayarlamak için null işaretçiye ayarlanabilir. DescriptorHandle bağımsız değişkenindeki tanıtıcı bir ARD ile ilişkiliyse, bu sütuna bağlamayı ayırır.
StringLengthPtr
[Ertelenen Giriş veya Çıkış] Tanımlayıcı kaydı için SQL_DESC_OCTET_LENGTH_PTR alanının ayarlanacağı değer.
StringLengthPtr, SQL_DESC_OCTET_LENGTH_PTR alanını null işaretçi olarak ayarlamak için null işaretçiye ayarlanabilir.
IndicatorPtr
[Ertelenen Giriş veya Çıkış] Tanımlayıcı kaydı için SQL_DESC_INDICATOR_PTR alanının ayarlanacağı değer.
IndicatorPtr, SQL_DESC_INDICATOR_PTR alanını null işaretçi olarak ayarlamak için null işaretçiye ayarlanabilir.
Döndürür
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR veya SQL_INVALID_HANDLE.
Tanılama
SQLSetDescRec SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, SQL_HANDLE_DESC HandleType ve DescriptorHandleTanıtıcı ile SQLGetDiagRec çağrılarak ilişkili bir SQLSTATE değeri elde edilebilir. Aşağıdaki tabloda, SQLSetDescRec tarafından yaygın olarak döndürülen SQLSTATE değerleri listelenir 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.) |
07009 | Geçersiz tanımlayıcı dizini |
RecNumber bağımsız değişkeni 0 olarak ayarlanmış ve DescriptorHandle bir IPD tanıtıcısına başvuruldu. RecNumber bağımsız değişkeni 0'dan küçüktür. RecNumber bağımsız değişkeni, veri kaynağının destekleyebilecek en fazla sütun veya parametre sayısından fazlaydı ve DescriptorHandle bağımsız değişkeni bir APD, IPD veya ARD'ydi. RecNumber bağımsız değişkeni 0'a eşitti ve DescriptorHandle bağımsız değişkeni örtük olarak ayrılmış bir APD'ye başvuruda bulundu. (Açıkça ayrılmış bir uygulama tanımlayıcısının yürütme süresine kadar bir APD veya ARD olup olmadığı bilinmediğinden, bu hata açıkça ayrılmış bir uygulama tanımlayıcısıyla oluşmaz.) |
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ğindeki 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, zaman uyumsuz olarak yürütülen bir işlevin (bu işlev değil) çağrıldığı ve bu işlev çağrıldığında hala yürütülmekte olan bir StatementHandle ile ilişkilendirildi. (DM) SQLExecute, SQLExecDirect, SQLBulkOperationsveya SQLSetPos, DescriptorHandle ilişkilendirildiği ve SQL_NEED_DATA döndürüldiği StatementHandle için çağrıldı. 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) DescriptorHandleile ilişkili bağlantı tanıtıcısı için zaman uyumsuz olarak yürütülen bir işlev çağrıldı. SQLSetDescRec işlevi çağrıldığında bu zaman uyumsuz işlev hala yürütülüyordu. (DM) SQLExecute, SQLExecDirectveya SQLMoreResults, DescriptorHandle ile ilişkili deyim tanıtıcılarından biri 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ı. |
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 | Uygulama satırı tanımlayıcısı değiştirilemez | DescriptorHandle bağımsız değişkeni bir IRD ile ilişkilendirildi. |
HY021 | Tutarsız tanımlayıcı bilgileri |
Türü alanı veya tanımlayıcıdaki SQL_DESC_TYPE alanıyla ilişkilendirilmiş başka bir alan geçerli veya tutarlı değildi. Tutarlılık denetimi sırasında denetlenen tanımlayıcı bilgileri tutarlı değildi. (Bu bölümün devamında yer alan "Tutarlılık Denetimleri" bölümüne bakın.) |
HY090 | Geçersiz dize veya arabellek uzunluğu | (DM) Sürücü bir ODBC |
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. |
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) DescriptorHandle ile ilişkili sürücü işlevi desteklemez. |
Yorum
Bir uygulama, tek bir sütun veya parametre için aşağıdaki alanları ayarlamak üzere SQLSetDescRec
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE (türü SQL_DATETIME veya SQL_INTERVAL olan kayıtlar için)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_DATA_PTR
SQL_DESC_OCTET_LENGTH_PTR
SQL_DESC_INDICATOR_PTR
Not
SQLSetDescRec çağrısı başarısız olursa, RecNumber bağımsız değişkeni tarafından tanımlanan tanımlayıcı kaydının içeriği tanımlanmamış olur.
Bir sütunu veya parametreyi bağlarken, SQLSetDescRec
Not
SQL_ATTR_USE_BOOKMARKS deyimi özniteliği, yer işareti alanlarını ayarlamak için her zaman SQLSetDescRec 0 RecNumber bağımsız değişkeniyle çağrılmadan önce ayarlanmalıdır. Bu zorunlu olmasa da, kesinlikle önerilir.
Tutarlılık Denetimleri
Bir uygulama APD, ARD veya IPD'nin SQL_DESC_DATA_PTR alanını her ayarladığı zaman sürücü tarafından tutarlılık denetimi otomatik olarak gerçekleştirilir. Alanlardan herhangi biri diğer alanlarla tutarsızsa, SQLSetDescRec
Bir uygulama bir APD, ARD veya IPD'nin SQL_DESC_DATA_PTR alanını her ayarlarken, sürücü SQL_DESC_TYPE alanının değerinin ve bu SQL_DESC_TYPE alanı için geçerli olan değerlerin geçerli ve tutarlı olup olmadığını denetler. Bu denetim her zaman SQLBindParameter
SQL_DESC_TYPE alanı geçerli ODBC C veya SQL türlerinden biri ya da sürücüye özgü bir SQL türünde olmalıdır. SQL_DESC_CONCISE_TYPE alanı, kısa tarih saat ve aralık türleri de dahil olmak üzere geçerli ODBC C veya SQL türlerinden biri ya da sürücüye özgü bir C veya SQL türünde olmalıdır.
SQL_DESC_TYPE kayıt alanı SQL_DATETIME veya SQL_INTERVAL ise, SQL_DESC_DATETIME_INTERVAL_CODE alanı geçerli tarih saat veya aralık kodlarından biri olmalıdır. (sqlsetdescfield
SQL_DESC_DATETIME_INTERVAL_CODE alanının açıklamasına bakın.) SQL_DESC_TYPE alanı sayısal bir tür gösteriyorsa, SQL_DESC_PRECISION ve SQL_DESC_SCALE alanlarının geçerli olduğu doğrulanır.
SQL_DESC_CONCISE_TYPE alanı bir zaman veya zaman damgası veri türü, saniye bileşenine sahip aralık türü veya zaman bileşenine sahip aralık veri türlerinden biriyse, SQL_DESC_PRECISION alanının geçerli bir saniye duyarlığı olduğu doğrulanır.
SQL_DESC_CONCISE_TYPE bir aralık veri türüyse, SQL_DESC_DATETIME_INTERVAL_PRECISION alanının geçerli bir aralık öncü duyarlık değeri olduğu doğrulanır.
Bir IPD'nin SQL_DESC_DATA_PTR alanı normalde ayarlanmaz; ancak, bir uygulama IPD alanlarının tutarlılık denetimini zorlamak için bunu yapabilir. IRD üzerinde tutarlılık denetimi gerçekleştirilemez. IPD'nin SQL_DESC_DATA_PTR alanının ayarlandığı değer aslında depolanmaz ve SQLGetDescField veya sqlGetDescRec
İlgili İşlevler
Hakkında bilgi için | Görmek |
---|---|
Sütun bağlama | SQLBindCol İşlevi |
Parametre bağlama | SQLBindParameter İşlevi |
Tek bir tanımlayıcı alanı alma | SQLGetDescField İşlevi |
Birden çok tanımlayıcı alanı alma | SQLGetDescRec İşlevi |
Tek tanımlayıcı alanlarını ayarlama | SQLSetDescField İşlevi |
Ayrıca Bkz.
ODBC API Başvurusu
ODBC Üst Bilgi Dosyaları