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 Uyumu: ODBC
Summary
SQLNativeSql, sürücü tarafından değiştirilmiş SQL dizisini döndürür.
SQLNativeSql SQL ifadesini çalıştırmaz.
Syntax
SQLRETURN SQLNativeSql(
SQLHDBC ConnectionHandle,
SQLCHAR * InStatementText,
SQLINTEGER TextLength1,
SQLCHAR * OutStatementText,
SQLINTEGER BufferLength,
SQLINTEGER * TextLength2Ptr);
Arguments
ConnectionHandle
[Giriş] Bağlantı tutamacı.
InStatementText
[Giriş] SQL metin dizisi çevrilecek.
TextLength1
[Giriş] *InStatementText metin dizesinin karakter cinsinden uzunluk.
OutStatementText
[Çıkış] Çevrilmiş SQL dizesinin geri dönmesi için bir tampona işaretçi.
OutStatementText NULL ise, TextLength2Ptr yine de OutStatementText tarafından işaret edilen tamponda döndürülebilecek toplam karakter sayısını (karakter verisi için null-sonlandırma karakteri hariç) döndürecektir.
BufferLength
[Giriş] *OutStatementText buffer'daki karakter sayısı. Bu dokümantasyonun önceki sürümleri, * InStatementText'te döndürülen değerin bir Unicode dizisi ise ( SQLNativeSqlW çağrılarken) bu karakter sayısının eşit olması gerektiğini yanlışlıkla ima etmişti. Böyle bir kısıtlama yok. En iyi birlikte çalışabilirlik için, sürücü yazarları bu fonksiyona herhangi bir karakter sayısının aktarılmasını beklemelidir; uygulama yazarlarının ise her zaman çift sayıyı kullanmaları önerilir.
TextLength2Ptr
[Çıkış] *OutStatementText içinde döndürülebilecek toplam karakter sayısını (null-terminasyon hariç) döndürmek için bir tampon işaretçisi. Döndürülebilecek karakter sayısı BufferLength'den büyük veya eşitse, *OutStatementText'teki çeviri SQL dizisi BufferLength olarak kısaltılır, null-sonlandırma karakterinin uzunluğu çıkarılır.
İadeler
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR veya SQL_INVALID_HANDLE.
Diagnostics
SQLNativeSql SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri alınır; bu değer SQLGetDiagRec ile SQL_HANDLE_DBC HandleType ve ConnectionHandle ile çağrılar. Aşağıdaki tablo, SQLNativeSql tarafından sıkça duygulanan SQLSTATE değerlerini listeler ve her birini bu fonksiyonun 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.
| 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ş | *OutStatementText tamponu tüm SQL dizesini döndürecek kadar büyük değildi, bu yüzden SQL dizisi kısaltıldı. Kısaltmamış SQL dizisinin uzunluğu *TextLength2Ptr'de döner. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 08003 | Bağlantı açık değil | ConnectionHandle bağlı durumda değildi. |
| 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. |
| 22007 | Geçersiz tarih saat biçimi | * InStatementText , geçersiz tarih, saat veya zaman damgası değeri olan bir kaçış maddesi içeriyordu. |
| 24000 | Geçersiz imleç durumu | Cümlede bahsedilen imleç, sonuç kümesinin başlangıcından önce veya sonuç setinin sonunda konumlandırılmıştır. Bu hata, yerel DBMS imleci uygulamasına sahip bir sürücü tarafından geri dönmeyebilir. |
| HY000 | Genel hata | Belirli bir SQLSTATE olmayan ve uygulamaya özgü SQLSTATE tanımlanmayan bir hata oluştu. *MessageText arabelleğinde 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ı. |
| HY009 | Geçersiz null işaretçi kullanımı | (DM) *InStatementText bir null işaretçiydi. |
| HY010 | İşlev dizisi hatası | (DM) ConnectionHandle için asenkron olarak çalışan bir fonksiyon çağrıldı ve bu fonksiyon çağrıldığında hâlâ çalışıyordu. |
| 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) TextLength1 argümanı 0'dan küçüktü ancak SQL_NTS'ye eşit değildi. |
| (DM) BufferLength argümanı 0'dan küçüktü ve OutStatementText argümanı null işaretçi değildi. | ||
| HY109 | Geçersiz imleç konumu | İmlecinin mevcut sırası silinmiş ya da alınmamıştı. Bu hata, yerel DBMS imleci uygulamasına sahip bir sürücü tarafından geri dönmeyebilir. |
| 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. |
| 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) ConnectionHandle ile ilişkili sürücü bu fonksiyonu desteklemez. |
Comments
Aşağıda, CONVERT skaler fonksiyonunu içeren aşağıdaki giriş SQL dizisi için SQLNativeSql'in ne döndürebileceğine dair örnekler verilmiştir. Veri kaynağında sütun empidinin INTEGER tipinde olduğunu varsayakalsın:
SELECT { fn CONVERT (empid, SQL_SMALLINT) } FROM employee
Microsoft SQL Server için bir sürücü, aşağıdaki çevrilmiş SQL dizisini döndürebilir:
SELECT convert (smallint, empid) FROM employee
ORACLE Server için bir sürücü, aşağıdaki çevrilmiş SQL dizisini döndürebilir:
SELECT to_number (empid) FROM employee
Ingres için bir sürücü, aşağıdaki çevrilmiş SQL dizisini döndürebilir:
SELECT int2 (empid) FROM employee
Daha fazla bilgi için Doğrudan Uygulama ve Hazırlıklı Uygulama bölümlerine bakınız.
İlgili Fonksiyonlar
None.