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.
Bir veri satırını getirmek için bir uygulama SQLFetch'i çağırır. SQLFetch herhangi bir imleç türüyle çağrılabilir, ancak yalnızca satır kümesi imlecini yalnızca ileri yönde taşır. SQLFetch imleci sonraki satıra ilerler ve SQLBindCol çağrılarıyla ilişkili tüm sütunların verilerini döndürür. İmleç sonuç kümesinin sonuna ulaştığında SQLFetch SQL_NO_DATA döndürür. SQLFetch'i çağırma örnekleri için bkz. SQLBindCol kullanma.
SQLFetch'in tam olarak nasıl uygulandığı sürücüye özgüdür, ancak genel desen sürücünün veri kaynağından herhangi bir ilişkili sütun için verileri alması, ilişkili değişkenlerin türlerine göre dönüştürmesi ve dönüştürülen verileri bu değişkenlere yerleştirmesi için kullanılır. Sürücü herhangi bir veriyi dönüştüremezse , SQLFetch bir hata döndürür. Uygulama satırları getirmeye devam edebilir, ancak geçerli satırın verileri kaybolur. İlişkisiz sütunların verilerine ne olacağı sürücüye bağlıdır, ancak çoğu sürücü bu verileri ya çeker ve atar ya da hiç çekmez.
Sürücü ayrıca bağlı olan uzunluk/gösterge arabelleklerinin değerlerini de ayarlar. Bir sütunun veri değeri NULL ise, sürücü ilgili uzunluk/gösterge arabelleği SQL_NULL_DATA olarak ayarlar. Veri değeri NULL değilse, sürücü uzunluk/gösterge arabelleği dönüştürmeden sonra verilerin bayt uzunluğuna ayarlar. Bu uzunluk, bazen birden fazla işlev çağrısı tarafından alınan uzun verilerde olduğu gibi belirlenemiyorsa, sürücü uzunluk/gösterge arabelleği SQL_NO_TOTAL olarak ayarlar. Tamsayılar ve tarih yapıları gibi sabit uzunlukta veri türleri için bayt uzunluğu veri türünün boyutudur.
Karakter ve ikili veriler gibi değişken uzunluktaki veriler için sürücü, dönüştürülen verilerin bayt uzunluğunu sütuna bağlı arabelleğin bayt uzunluğuna göre denetler; arabelleğin uzunluğu SQLBindCol'dakiBufferLength bağımsız değişkeninde belirtilir. Dönüştürülen verilerin bayt uzunluğu arabelleğin bayt uzunluğundan büyükse, sürücü verileri arabelleğe sığacak şekilde kısaltır, uzunluk/gösterge arabelleğinde doğrulanmamış uzunluğu döndürür, SQL_SUCCESS_WITH_INFO döndürür ve tanılamaya SQLSTATE 01004 (Veri kesilmiş) yerleştirir. Bunun tek istisnası, SQLFetch tarafından döndürüldüğünde kesilen değişken uzunluktaki bir yer işareti olup, SQLSTATE 22001 (Dize verileri, sağ kesilmiş) döndürdüğünde ortaya çıkar.
Sabit uzunluktaki veriler hiçbir zaman kesilmez, çünkü sürücü ilişkili arabelleğin boyutunun veri türünün boyutu olduğunu varsayar. Veri kesilmesi genellikle seyrek görülür, çünkü uygulama genelde tüm veri değerini barındırabilecek kadar büyük bir arabelleğe bağlanır; gerekli boyutu meta verilerden belirler. Ancak, uygulama açıkça çok küçük olduğunu bildiği bir arabellek bağlayabilir. Örneğin, parça açıklamasının ilk 20 karakterini veya uzun bir metin sütununun ilk 100 karakterini alıp görüntüleyebilir.
Karakter verileri, kesilmiş olsa bile uygulamaya döndürülmeden önce sürücü tarafından null olarak sonlandırılmalıdır. Null sonlandırma karakteri, döndürülen bayt uzunluğuna dahil değildir, ancak ilişkili arabellekte alan gerektirir. Örneğin, bir uygulamanın ASCII karakter kümesindeki karakter verilerinden oluşan dizeler kullandığını, sürücüde döndürülecek 50 karakterlik veri olduğunu ve uygulamanın arabelleğinin 25 bayt uzun olduğunu varsayalım. Uygulamanın arabelleğinde, sürücü ilk 24 karakteri ve ardından bir null sonlandırma karakteri döndürür. Uzunluk/gösterge arabelleğinde 50 baytlık bir bayt uzunluğu döndürür.
Uygulama, sonuç kümesini oluşturan deyimi yürütmeden önce SQL_ATTR_MAX_ROWS deyimi özniteliğini ayarlayarak sonuç kümesindeki satır sayısını kısıtlayabilir. Örneğin, raporları biçimlendirmek için kullanılan bir uygulamadaki önizleme modu yalnızca raporun ilk sayfasını görüntülemek için yeterli veriye ihtiyaç duyar. Sonuç kümesinin boyutunu kısıtlayarak, böyle bir özellik daha hızlı çalışır. Bu deyim özniteliği, ağ trafiğini azaltmaya yöneliktir ve tüm sürücüler tarafından desteklenmeyebilir.