Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygunluk
Tanıtılan Sürüm: ODBC 3.0 Standartlarına Uyum: ISO 92
Summary
SQLGetStmtAttr , bir ifade özniteliğinin mevcut ayarını döndürür.
Note
Driver Manager bu fonksiyonu ODBC 3 olduğunda neye eşlediği hakkında daha fazla bilgi için. x uygulaması ODBC 2 ile çalışıyor. x sürücüsü, bkz. Uygulamaların Geriye Doğru Uyumluluğu için Eşleme Değiştirme Fonksiyonları.
Syntax
SQLRETURN SQLGetStmtAttr(
SQLHSTMT StatementHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Arguments
StatementHandle
[Giriş] Deyim tanıtıcısı.
Öznitelik
[Giriş] Özniteliği almak için alınıyor.
Valueptr
[Çıkış] Attribute'da belirtilen özniteliğin değerini döndürmek için bir tampona işaretçi.
ValuePtr NULL ise, StringLengthPtr yine de ValuePtr tarafından işaret edilen tamponda döndürülebilecek toplam bayt sayısını (karakter verisi için null-sonlandırma karakteri hariç) döndürecektir.
BufferLength
[Giriş] Eğer Attribute ODBC tarafından tanımlanmış bir öznitelikse ve ValuePtr bir karakter dizisine veya ikili tampona işaret ediyorsa, bu argüman *ValuePtr uzunluğu olmalıdır.
Attribute ODBC tanımlı bir öznitelikse ve *ValuePtr bir tamsaydı, BufferLength göz ardı edilir.
*ValuePtr içinde döneri değer bir Unicode diziyse (SQLGetStmtAttrW çağrıldığında), BufferLength argümanı çift sayı olmalıdır.
Attribute sürücü tarafından tanımlanan bir öznitelikse, uygulama özniteliğin niteliğini Driver Manager'a BufferLength argümanını ayarlayarak gösterir. BufferLength aşağıdaki değerlere sahip olabilir:
Eğer *ValuePtr bir karakter dizesine işaret ediyorsa, BufferLength dizinin veya SQL_NTS'nin uzunluğudur.
Eğer *ValuePtr ikili bir tampona işaret ise, uygulama SQL_LEN_BINARY_ATTR(uzunluk) makrosunun sonucunu BufferLength'e yerleştirir. Bu, BufferLength içinde negatif bir değer verir.
Eğer *ValuePtr, karakter dizisi veya ikili dizi dışında bir değere işaret eden bir işaretçiyse, BufferLength SQL_IS_POINTER değerine sahip olmalıdır.
Eğer *ValuePtr sabit uzunluklu bir veri tipi içeriyorsa, BufferLength uygun şekilde ya SQL_IS_INTEGER ya da SQL_IS_UINTEGER olur.
StringLengthPtr
[Çıkış] * ValuePtr'de döndürülebilecek toplam bayt sayısını (null-terminasyon karakteri hariç) döndürmek için bir tampon işaretçisi. Özellik değeri bir karakter dizisi ise ve döndürülebilecek bayt sayısı BufferLength'den büyük veya eşitse, *ValuePtr'deki veri BufferLength olarak null-terminasyon karakterinin uzunluğu çıkarılır ve sürücü tarafından null-sonlandırılır.
İadeler
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR veya SQL_INVALID_HANDLE.
Diagnostics
SQLGetStmtAttr SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri, SQL_HANDLE_STMT HandleType ve StatementHandleile SQLGetDiagRec çağrılarak elde edilebilir. Aşağıdaki tablo, SQLGetStmtAttr tarafından sıkça duygulanan SQLSTATE değerlerini listelemekte ve her birini bu fonksiyonun bağlamında açıklamaktadır; "(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.) |
| 01004 | Dize verileri, sağ kesilmiş | *ValuePtr içinde döndürülen veri, BufferLength olarak null-sonlandırma karakterinin uzunluğu olarak kısaltıldı. Kısmamış dizi değerinin uzunluğu *StringLengthPtr'de döner. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 24000 | Geçersiz imleç durumu | Argüman Özniteliği SQL_ATTR_ROW_NUMBER ve imleç açık değildi ya da imleç sonuç setinin başlangıcından önce veya sonuç setinin bitmesinden sonra konumlanmıştı. |
| HY000 | Genel hata | Belirli bir SQLSTATE olmayan ve uygulamaya özgü SQLSTATE tanımlanmayan bir hata oluştu. SQLGetDiagRec tarafından MessageText argümanında geri dönen hata mesajı, hatayı ve nedenini tanımlar. |
| 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) 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, SQLGetStmtAttr fonksiyonu çağrıldığında hâlâ çalışıyordu. (DM) StatementHandle için asenkron olarak çalışan bir fonksiyon çağrıldı ve bu fonksiyon çağrıldığında hâlâ çalışı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) *ValuePtr bir karakter dizisidir ve BufferLength sıfırdan küçüktü ancak SQL_NTS'ye eşit değildi. |
| HY092 | Geçersiz öznitelik/seçenek tanımlayıcısı | Argüman Attribute için belirtilen değer, sürücünün desteklediği ODBC sürümü için geçerli değildi. |
| HY109 | Geçersiz imleç konumu | Özellik argümanı SQL_ATTR_ROW_NUMBER ve satır silinmiş ya da alınamıyordu. |
| 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ı | Argüman Attribute için belirtilen değer, sürücü tarafından desteklenen ODBC sürümü için geçerli bir ODBC ifadesi özitiliğiydi ancak sürücü tarafından desteklenmiyordu. |
| 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. |
Comments
Statement özellikleri hakkında genel bilgi için Statement Attributes sayfasına bakınız.
SQLGetStmtAttr çağrısı, *ValuePtr içinde Attribute'da belirtilen ifade özözniteliğinin değerini döndürür. Bu değer ya SQLULEN değeri ya da null-sonlanmış bir karakter dizisi olabilir. Değer SQLULEN değeri ise, bazı sürücüler yalnızca alt 32-bit veya 16-bit tamponu yazabilir ve üst dereceden biti değiştirmeden bırakabilir. Bu nedenle, uygulamalar SQLULEN tamponu kullanmalı ve bu fonksiyonu çağırmadan önce değeri 0'a başlatmalıdır. Ayrıca, BufferLength ve StringLengthPtr argümanları kullanılmaz. Eğer değer null-sonlu bir dizedirse, uygulama BufferLength argümanında o dizinin maksimum uzunluğunu belirtir ve sürücü *StringLengthPtr buffer'da o dizinin uzunluğunu döndürür.
SQLGetStmtAttr çağıran uygulamaların ODBC 2 ile çalışmasına izin vermek için. x sürücü ile birlikte bir çağrı Driver Manager'da SQLGetStmtAttr ile eşlenir.
Aşağıdaki ifade öznitelikleri yalnızca okunabilir, bu yüzden SQLGetStmtAttr tarafından alınabilir ancak SQLSetStmtAttr tarafından ayarlanamaz:
SQL_ATTR_IMP_PARAM_DESC
SQL_ATTR_IMP_ROW_DESC
SQL_ATTR_ROW_NUMBER
Ayarlanabilir ve alınabilecek öznitelikler listesi için SQLSetStmtAttr adresine bakınız.
İlgili Fonksiyonlar
| Hakkında bilgi için | Bkz: |
|---|---|
| Bağlantı özniteliğinin ayarını döndürme | SQLGetConnectAttr İşlevi |
| Bağlantı özelliği ayarı | SQLSetConnectAttr İşlevi |
| Deyim özniteliğini ayarlama | SQLSetStmtAttr İşlevi |