SQLNativeSql İşlevi

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.

None.