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.
SQLSTATEs, bir uyarının veya hatanın nedeni hakkında ayrıntılı bilgi sağlar. Bu kılavuzdaki SQLSTATE’ler, ISO/IEC CLI belirtiminde bulunanları temel alır, ancak IM ile başlayan SQLSTATE’ler ODBC'ye özeldir.
Dönüş kodlarından farklı olarak, bu kılavuzdaki SQLSTATEs yönergelerdir ve sürücülerin bunları döndürmesi gerekmez. Bu nedenle, sürücülerin tespit edebildikleri herhangi bir hata veya uyarı için uygun SQLSTATE değerini döndürmesi gerektiğinden, uygulamalar bunun her zaman gerçekleşeceğine güvenmemelidir. Bu durumun nedenleri iki kat daha fazladır:
Tamamlanmamışlık Bu kılavuz çok sayıda hata, uyarı ve bunların olası nedenlerini listelese de, tam değildir ve muhtemelen hiçbir zaman tamamlanmayacaktır; sürücü uygulamaları çok fazla farklılık gösterir. Belirli bir sürücü büyük olasılıkla bu kılavuzda listelenen tüm SQLSTATEs'leri döndürmez ve bu kılavuzda listelenmeyen SQLSTAT'ları döndürebilir.
Karmaşık -lığı Bazı veritabanı altyapıları (özellikle ilişkisel veritabanı altyapıları) tam anlamıyla binlerce hata ve uyarı döndürür. Bu tür altyapıların sürücülerinin, söz konusu çaba, eşlemelerin yetersizliği, sonuçta elde edilen kodun büyük boyutu ve sonuçta elde edilen kodun düşük değeri nedeniyle bu hataların ve uyarıların tümünü SQLSTATEs ile eşleme olasılığı düşüktür ve bu da genellikle çalışma zamanında hiç karşılaşılmaması gereken programlama hataları döndürür. Bu nedenle, sürücüler makul göründüğü kadar çok hata ve uyarı eşlemelidir ve SQLSTATE 01004 (Veriler kesilmiş) gibi uygulama mantığının temel alınabileceği hataları ve uyarıları eşlemelidir.
SQLSTATEs güvenilir bir şekilde döndürülmediğinden, çoğu uygulama bunları yalnızca kullanıcıya, genellikle oluşan belirli hata veya uyarıya ve yerel hata koduna uyarlanmış ilişkili tanılama iletisiyle birlikte görüntüler. Uygulamalar çoğu SQLSTATE'de programlama mantığını temel alamadığından, bunu yaparken nadiren işlev kaybı olur. Örneğin, SQLExecDirect'in SQLSTATE 42000 (Söz dizimi hatası veya erişim ihlali) döndürdüğü varsayalım. Bu hataya neden olan SQL deyimi sabit kodlanmış veya uygulama tarafından oluşturulmuşsa, bu bir programlama hatasıdır ve kodun düzeltilmesi gerekir. SQL deyimi kullanıcı tarafından girilirse, bu bir kullanıcı hatasıdır ve uygulama kullanıcıya sorunu bildirerek mümkün olan her şeyi yapmıştır.
Uygulamalar SQLSTATEs üzerinde temel programlama mantığı gerçekleştirdiğinde, SQLSTATE'in döndürülmemesi veya farklı bir SQLSTATE döndürülmesi için hazırlıklı olmaları gerekir. Tam olarak hangi SQLSTATE'ler güvenilir şekilde iade edilir, yalnızca çok sayıda sürücü deneyimlerine dayanılarak belirlenebilir. Ancak genel bir yönerge, veri kaynağının aksine sürücüde veya Sürücü Yöneticisi'nde oluşan hatalara yönelik SQLSTATEs'in güvenilir bir şekilde döndürülebilecek olmasıdır. Örneğin, sürücülerin çoğu büyük olasılıkla SQLSTATE HYC00'ı döndürür (İsteğe bağlı özellik uygulanmaz), daha az sürücü ise SQLSTATE 42021'i döndürür (Sütun zaten var).
Aşağıdaki SQLSTATE'ler çalışma anı hatalarını veya uyarılarını gösterir ve programlama mantığını oluşturmak için iyi birer adaydır. Ancak, tüm sürücülerin bunları iade etme garantisi yoktur.
01004 (Veriler kesildi)
01S02 (Seçenek değeri değiştirildi)
HY008 (İşlem iptal edildi)
HYC00 (İsteğe bağlı özellik uygulanmadı)
HYT00 (Zaman aşımı süresi doldu)
SQLSTATE HYC00 (İsteğe bağlı özellik uygulanmadı) özellikle önemlidir çünkü bir uygulamanın sürücünün belirli bir deyimi veya bağlantı özniteliğini destekleyip desteklemediğini belirlemesinin tek yoludur.
SQLSTATE'lerin tam listesi ve bunları döndüren işlevler için bkz Ek A: ODBC Hata Kodları. Her işlevin belirli bir SQLSTATE döndürebileceği koşulların ayrıntılı açıklaması için bu işleve bakın.