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 1.0 Standartlarına Uyum: Kullanımdan Kaldırıldı
Summary
SQLExtendedFetch, belirlenen veri setini sonuç kümesinden alır ve tüm bağlı sütunlar için veri döndürür. Sıra kümeleri mutlak veya göreceli konumda veya yer imiyle belirtilebilir.
Note
ODBC 3*.x* içinde, SQLExtendedFetchSQLFetchScroll ile değiştirilmiştir. ODBC 3*.x* uygulamaları SQLExtendedFetch çağrısı yapmamalıdır; bunun yerine SQLFetchScroll adını çağırmalılar. Driver Manager, ODBC 2*.x* sürücüsüyle çalışırken SQLFetchScroll'uSQLExtendedFetch ile eşler. ODBC 3*.x* sürücüleri, ODBC 2*.x* uygulamalarıyla çalışmak istiyorlarsa SQLExtendedFetch'i desteklemelidir. Daha fazla bilgi için, Ek G: Geri Uyumluluk İçin Sürücü Kılavuzları bölümünde "Yorumlar" ve Blok İmleçleri, Kaydırılabilir İmleçler ve Geri Uyumluluk bölümlerine bakınız.
Syntax
SQLRETURN SQLExtendedFetch(
SQLHSTMT StatementHandle,
SQLUSMALLINT FetchOrientation,
SQLLEN FetchOffset,
SQLULEN * RowCountPtr,
SQLUSMALLINT * RowStatusArray);
Arguments
StatementHandle
[Giriş] Deyim tanıtıcısı.
FetchOrientation
[Giriş] Bir tür getirme yöntemi. Bu, SQLFetchScroll'dakiFetchOrientation ile aynıdır.
FetchOffset
[Giriş] Getirilecek sıranın sayısı. Bu, SQLFetchScroll'dakiFetchOffset ile aynıdır, ancak bir istisna vardır.
FetchOrientation SQL_FETCH_BOOKMARK olduğunda, FetchOffset sabit uzunlukta bir yer imidir, yer iminden bir kayma değil. Başka bir deyişle, SQLExtendedFetch bu argümandan yer imini alır, SQL_ATTR_FETCH_BOOKMARK_PTR ifadesi özniteliğini değil. Değişken uzunlukta yer imlerini desteklemez ve bir yer iminden 0 dışında bir offsetle satır seti getirmeyi desteklemez.
RowCountPtr
[Çıkış] Gerçekten alınan satır sayısını döndürmek için bir tampon işareti. Bu tampon, SQL_ATTR_ROWS_FETCHED_PTR ifadesi özniteliğinde belirtilen tampon ile aynı şekilde kullanılır. Bu tampon yalnızca SQLExtendedFetch tarafından kullanılır.
SQLFetch veya SQLFetchScroll tarafından kullanılmaz.
RowStatusArray
[Çıkış] Her satırın durumunu döndürmek için bir diziye işaret edilir. Bu dizi, SQL_ATTR_ROW_STATUS_PTR ifadesi özniteliğiyle belirtilen diziyle aynı şekilde kullanılır.
Ancak, bu dizinin adresi IRD'deki SQL_DESC_STATUS_ARRAY_PTR alanında saklanmaz. Ayrıca, bu dizi yalnızca SQLExtendedFetch ve SQLBulkOperations tarafından SQL_ADD veya SQLSetPos işlemi ile SQLExtendedFetch'ten sonra çağrıldığında kullanılır. SQLFetch veya SQLFetchScroll tarafından kullanılmaz, ayrıca SQLBulkOperations veya SQLSetPos tarafından da SQLFetch veya SQLFetchScroll'dan sonra çağrıldıklarında kullanılmaz. Ayrıca, herhangi bir fetch fonksiyonu çağrılmadan önce SQLBulkOperations ile SQL_ADD Operasyonu çağrıldığında da kullanılmaz. Başka bir deyişle, sadece S7 durumunda kullanılır. S5 veya S6 ifade devletlerinde kullanılmaz. Daha fazla bilgi için, Ek B: ODBC Durum Geçiş Tabloları'ndaki Statement Geçişleri'ne bakınız.
Uygulamalar, RowStatusArray argümanında geçerli bir işaretçi sağlamalıdır; eğer değilse, SQLExtendedFetch davranışı ile SQLBulkOperations veya SQLSetPos çağrılarının SQLExtendedFetch tarafından konumlandırıldıktan sonra davranışı tanımlanmamıştır.
İadeler
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_STILL_EXECUTING, SQL_ERROR veya SQL_INVALID_HANDLE.
Diagnostics
SQLExtendedFetch SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri SQLErrror çağrılarak elde edilebilir. Aşağıdaki tablo, SQLExtendedFetch tarafından sıkça duygulanan SQLSTATE değerlerini listeler ve her birini bu fonksiyon 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. Tek bir sütunda hata oluşursa, SQLGetDiagField SQL_DIAG_COLUMN_NUMBER DiagIdentifier ile çağrılarak hatanın hangi sütunda gerçekleştiğini belirleyebilir; ve SQLGetDiagField , SQL_DIAG_ROW_NUMBER DiagIdentifier ile çağrılarak o sütunu içeren satırı belirleyebilir.
| 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ş | Bir sütun için dize veya ikili veri dönerken, boş karakter olmayan veya NULL olmayan ikili verilerin kısaltılmasına yol açardı. Bir dize değeriyse, sağ kesilmiştir. Eğer sayısal bir değerse, sayının kesirlik kısmı kısılırdı. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01S01 | Sırada hata | Bir veya daha fazla satır getirilirken hata meydana geldi. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01S06 | Sonuç seti dönerken, ilk satır setini geri getirdiğinde getirmeye çalışın | İstenen sıra kümesi, mevcut konum birinci satırın ötesinde olduğunda sonuç kümesinin başlangıcıyla örtüşüyordu ve ya FetchOrientation SQL_PRIOR ya da FetchOrientation mutlak değeri mevcut SQL_ROWSET_SIZE'dan az veya eşit olan negatif FetchOffset ile SQL_RELATIVE oluyordu. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01S07 | Kesirli kesme | Bir sütun için verilen veriler kısaltılmıştı. Sayısal veri tipleri için, sayının kesirlik kısmı kısaltılmıştır. Zaman bileşeni içeren zaman, zaman damgası ve aralık veri türleri için, zamanın kesirlik kısmı kısaltılmıştır. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 07006 | Kısıtlanmış veri türü özniteliği ihlali | Bir veri değeri, SQLBindCol'daTargetType tarafından belirtilen C veri tipine dönüştüremiyordu. |
| 07009 | Geçersiz tanımlayıcı indeksi | Sütun 0 SQLBindCol ile sınırlıydı ve SQL_ATTR_USE_BOOKMARKS ifadesi özniteliği SQL_UB_OFF olarak ayarlandı. |
| 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. |
| 22002 | Gösterge değişkeni gerekli ancak sağlanmadı | NULL verisi, SQLBindColtarafından ayarlanan StrLen_or_IndPtr null işaretçi olan bir sütuna alınırdı. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 22003 | Sayısal değer aralık dışında | Bir veya daha fazla sütun için sayısal değeri (sayısal veya dizi olarak) döndürmek, sayının (kesirli değil) kısmının tamamen kesilmesine neden olurdu. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) Daha fazla bilgi için, Ek D'deki Aralık ve Sayısal Veri Türleri Kılavuzları'na bakınız: Veri Türleri. |
| 22007 | Geçersiz tarih saat biçimi | Sonuç kümesindeki bir karakter sütunu tarih, saat veya zaman damgası C yapısına bağlıdır ve sütundaki bir değer sırasıyla geçersiz bir tarih, saat veya zaman damgasıdır. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 22012 | Sıfıra bölme | Aritmetik ifadeden bir değer döndürülür ve bu da sıfıra bölünmeye yol açar. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 22015 | Aralık alanı taşması | Kesin sayısal veya aralıklı SQL tipinden C aralığına atanmak, öndeki alanda önemli rakamların kaybına yol açardı. Veri C aralığına getirilirken, C aralığında SQL tipinin değeri temsil edilmezdi. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 22018 | Atama belirtimi için geçersiz karakter değeri | C tipi, tam veya yaklaşık bir sayısal, tarih saati veya aralık veri tipiydi; sütunun SQL tipi bir karakter veri tipiydi; ve sütundaki değer, bağlı C tipinin geçerli bir literali değildi. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 24000 | Geçersiz imleç durumu | StatementHandle yürütülmüş durumdaydı, ancak StatementHandle ile ilişkilendirilmiş bir sonuç kümesi yoktu. |
| 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 |
StatementHandle için zaman uyumsuz işleme etkinleştirildi. Fonksiyon çağrıldı ve çalıştırma tamamlanmadan önce StatementHandleüzerinde SQLCancel veya SQLCancelHandle çağrıldı ve ardından StatementHandle üzerinde fonksiyon tekrar ç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ı. |
| 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, SQLExtendedFetch 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) Belirtilen StatementHandle yürütülmüş durumda değildi. Fonksiyon, önce SQLExecDirect, SQLExecute veya bir katalog fonksiyonu çağrılmadan çağrılmıştır. (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ı. (DM) SQLExtendedFetch , StatementHandle için SQLFetch veya SQLFetchScroll çağrıldıktan sonra ve SQLFreeStmt çağrılmadan önce SQL_CLOSE seçeneğiyle çağrılmıştır. (DM) SQLBulkOperations, SQLFetch, SQLFetchScroll veya SQLExtendedFetch çağrılmadan önce bir ifade için çağrıldı ve ardından SQLExtendedFetch çağrılmadan önce SQLFreeStmt SQL_CLOSE seçeneğiyle ç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. |
| HY106 | Menzil dışı tıp getir | (DM) FetchOrientation argümanı için belirtilen değer geçersizdi. ("Yorumlar" bölümüne bakınız.) FetchOrientation argümanı SQL_FETCH_BOOKMARK ve SQL_ATTR_USE_BOOKMARKS ifadesi atributu SQL_UB_OFF olarak ayarlanmıştı. SQL_CURSOR_TYPE ifade seçeneğinin değeri SQL_CURSOR_FORWARD_ONLY ve argüman FetchOrientation'in değeri SQL_FETCH_NEXT değildi. FetchOrientation argümanı SQL_FETCH_RESUME. |
| HY107 | Satır değeri aralık dışı | SQL_CURSOR_TYPE ifadesi seçeneğiyle belirtilen değer SQL_CURSOR_KEYSET_DRIVEN idi, ancak SQL_KEYSET_SIZE ifadesi özniteliğiyle belirtilen değer 0'dan büyük ve SQL_ROWSET_SIZE ifadesi özniteliğinde belirtilen değerden küçüktü. |
| HY111 | Geçersiz yer imimi değeri | FetchOrientation argümanı SQL_FETCH_BOOKMARK ve FetchOffset argümanında belirtilen yer imi geçerli 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 alınma durumu hakkında daha fazla bilgi için bkz. SQLEndTran İşlevi. |
| HYC00 | İsteğe bağlı özellik uygulanmadı | Sürücü veya veri kaynağı, belirtilen getirme türünü desteklemez. Sürücü veya veri kaynağı, SQLBindCol'dakiTargetType ile ilgili sütunun SQL veri tipinin birleşimiyle belirlenen dönüşümü desteklemez. Bu hata, yalnızca sütunun SQL veri tipi sürücüye özgü bir SQL veri tipine eşlendiğinde geçerlidir. |
| 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ına sahip dönem SQLSetStmtOption, SQL_QUERY_TIMEOUT üzerinden belirlenir. |
| 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. |
Comments
SQLExtendedFetch'in davranışı, aşağıdaki istisnalar dışında SQLFetchScroll ile aynıdır:
SQLExtendedFetch ve SQLFetchScroll , alınan satır sayısını döndürmek için farklı yöntemler kullanır. SQLExtendedFetch,*RowCountPtr'de alınan satır sayısını döndürür; SQLFetchScroll , SQL_ATTR_ROWS_FETCHED_PTR tarafından işaret edilen tampona doğrudan getirilen satır sayısını döndürür. Daha fazla bilgi için RowCountPtr argümanına bakınız.
SQLExtendedFetch ve SQLFetchScroll , farklı dizilerdeki her satırın durumunu döndürür. Daha fazla bilgi için RowStatusArray argümanına bakınız.
FetchOrientation SQL_FETCH_BOOKMARK olduğunda SQLExtendedFetch ve SQLFetchScroll, yer imini almak için farklı yöntemler kullanır. SQLExtendedFetch, değişken uzunlukta yer imlerini veya bir yer iminden 0 dışında bir offsetle satır kümelerini getirmeyi desteklemez. Daha fazla bilgi için FetchOffset argümanına bakınız.
SQLExtendedFetch ve SQLFetchScroll farklı satır kümesi boyutları kullanır. SQLExtendedFetch SQL_ROWSET_SIZE ifadesi özniteliğinin değerini, SQLFetchScroll ise SQL_ATTR_ROW_ARRAY_SIZE statement özniteliğinin değerini kullanır.
SQLExtendedFetch'in hata işleme semantiği SQLFetchScroll'dan biraz farklıdır. Daha fazla bilgi için SQLFetchScroll'un "Yorumlar" bölümündeki "Hata İşleme" bölümüne bakınız.
SQLExtendedFetch bağlama ofsetlerini (SQL_ATTR_ROW_BIND_OFFSET_PTR statement özniteliği) desteklemez.
SQLExtendedFetch çağrıları, SQLFetch veya SQLFetchScroll çağrılarıyla karıştırılamaz ve eğer herhangi bir fetch fonksiyonu çağrılmadan önce SQLBulkOperations çağrılırsa, SQLExtendedFetch imleç kapanıp yeniden açılana kadar çağrılamaz. Yani, SQLExtendedFetch yalnızca S7 özet durumunda çağrılabilir. Daha fazla bilgi için, Ek B: ODBC Durum Geçiş Tabloları'ndaki Statement Geçişleri'ne bakınız.
Bir uygulama ODBC 2*.x* sürücüsü kullanırken SQLFetchScroll çağırdığında, Driver Manager bu çağrıyı SQLExtendedFetch ile eşlerler. Daha fazla bilgi için, SQLFetchScroll içindeki "SQLFetchScroll ve ODBC 2*.x* Sürücüleri" bölümüne bakınız.
ODBC 2*.x* içinde, SQLExtendedFetch birden fazla satır almak için çağrıldı ve SQLFetch tek bir satır almak için çağrıldı. ODBC 3*.x* formatında ise, SQLFetch çağrılarak birden fazla satır getirebilir.
İlgili Fonksiyonlar
| Hakkında bilgi için | Bkz: |
|---|---|
| Sonuç kümesindeki bir sütuna arabellek bağlama | SQLBindCol İşlevi |
| Toplu ekleme, güncelleme veya silme işlemlerini gerçekleştirmek | SQLBulkOperations Fonksiyonu |
| Deyim işlemeyi iptal etme | SQLCancel İşlevi |
| Sonuç kümesindeki bir sütunla ilgili bilgi döndürme | SQLDescribeCol Fonksiyonu |
| SQL ifadesinin yürütülmesi | SQLExecDirect Fonksiyonu |
| Hazırlanmış bir SQL deyimini yürütme | SQLExecute İşlevi |
| Sonuç kümesi sütunlarının sayısını döndürmek | SQLNumResultCols Fonksiyonu |
| İmleci konumlandırmak, satır kümesinde veriyi yenilemek veya sonuç kümesindeki verileri güncellemek veya silmek | SQLSetPos Fonksiyonu |
| Deyim özniteliğini ayarlama | SQLSetStmtAttr İşlevi |