Aracılığıyla paylaş


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 2.x sürücüsü, tanımlayıcı bir ARD, ColumnNumber bağımsız değişkeni 0 olarak ayarlandı ve BufferLength bağımsız değişkeni için belirtilen değer 4'e eşit değildi.
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 çağırabilir:

  • 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 SQLBindCol veya SQLBindParameter çağırmadan veya sqlsetdescfieldbirden çok çağrı yapmadan bağlamayı etkileyen birden çok alanı değiştirmenize olanak tanır. SQLSetDescRec, şu anda bir deyimle ilişkilendirilmiş olmayan bir tanımlayıcıda alanlar ayarlayabilir. SQLBindParameterSQLSetDescRec'den daha fazla alan ayarladığını, tek bir çağrıda hem APD hem de IPD'de alan ayarlayabildiğini ve tanımlayıcı tanıtıcı gerektirmediğini unutmayın.

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 SQLSTATE HY021 (Tutarsız tanımlayıcı bilgileri) döndürür.

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 veya SQLBindCol çağrıldığında veya BIR APD, ARD veya IPD için SQLSetDescRec çağrıldığında gerçekleştirilir. Bu tutarlılık denetimi, tanımlayıcı alanlarında aşağıdaki denetimleri içerir:

  • 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. (sqlsetdescfieldSQL_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çağrısı tarafından alınamaz; ayarı yalnızca tutarlılık denetimini zorlamak için yapılır.

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ı