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
Kullanıma Sunulan Sürüm: ODBC 1.0 Standartları Uyumluluğu: ISO 92
Özet
SQLExecDirect , deyiminde herhangi bir parametre varsa parametre işaretçisi değişkenlerinin geçerli değerlerini kullanarak hazırlanabilir bir deyim yürütür.
SQLExecDirect , bir kerelik yürütme için SQL deyimi göndermenin en hızlı yoludur.
Sözdizimi
SQLRETURN SQLExecDirect(
SQLHSTMT StatementHandle,
SQLCHAR * StatementText,
SQLINTEGER TextLength);
Arguments
StatementHandle
[Giriş] Deyim tanıtıcısı.
StatementText
[Giriş] Yürütülecek SQL deyimi.
TextLength
[Giriş] Karakter cinsinden *StatementText uzunluğu.
İade
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NEED_DATA, SQL_STILL_EXECUTING, SQL_ERROR, SQL_NO_DATA, SQL_INVALID_HANDLE veya SQL_PARAM_DATA_AVAILABLE.
Diagnostics
SQLExecDirect SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, SQL_HANDLE_STMT HandleType ve StatementHandleTanıtıcısı ile SQLGetDiagRec çağrılarak ilişkili bir SQLSTATE değeri alınabilir. Aşağıdaki tabloda, SQLExecDirect tarafından yaygın olarak döndürülen SQLSTATE değerleri listelenmektedir ve her biri bu işlev bağlamında açıklanmaktadır; "(DM)" gösterimi, Sürücü Yöneticisi tarafından döndürülen SQLSTATEs açıklamalarından önce gelir. Aksi belirtilmediği sürece, her SQLSTATE değeriyle ilişkili dönüş kodu SQL_ERROR.
| SQLSTATE | Hata | Description |
|---|---|---|
| 01000 | Genel uyarı | Sürücüye özgü bilgilendirici ileti. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01001 | İmleç işlemi çakışması |
*
StatementText , konumlandırılmış bir güncelleştirme veya silme deyimi içeriyordu ve hiçbir satır veya birden fazla satır güncelleştirilmedi veya silinmedi. (Birden fazla satıra yapılan güncelleştirmeler hakkında daha fazla bilgi için SQLSetStmtAttr içindeki SQL_ATTR_SIMULATE_CURSOR Özniteliğinin açıklamasına bakın.) (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01003 | Küme işlevinde null değer ortadan kaldırıldı | StatementText bağımsız değişkeni bir küme işlevi (AVG, MAX, MIN vb.) içeriyordu, ancak COUNT kümesi işlevini içermiyordu ve işlev uygulanmadan önce NULL bağımsız değişken değerleri ortadan kaldırıldı. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01004 | Dize verileri, sağ kesilmiş | Giriş/çıkış veya çıkış parametresi için döndürülen dize veya ikili veriler boş olmayan karakterin veya NULL olmayan ikili verilerin kesilmesine neden oldu. Bir dize değeriyse, sağ kesilmiştir. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01006 | Ayrıcalık iptal edilmiyor | * StatementText bir REVOKE ifade içeriyordu ve kullanıcı belirtilen ayrıcalığa sahip değildi. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01007 | Ayrıcalık verilmedi | *StatementText bir GRANT ifadeydi ve kullanıcıya belirtilen ayrıcalık verilemezdi. |
| 01S02 | Seçenek değeri değiştirildi | Uygulama çalışma koşulları nedeniyle belirtilen deyim özniteliği geçersizdi, bu nedenle benzer bir değer geçici olarak değiştirildi. (Geçici olarak değiştirilen değerin ne olduğunu belirlemek için SQLGetStmtAttr çağrılabilir.) İkinci değer, imleç kapatılana kadar StatementHandle için geçerlidir ve bu noktada deyim özniteliği önceki değerine geri döner. Değiştirilebilen deyim öznitelikleri şunlardır: SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ ATTR_SIMULATE_CURSOR (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01S07 | Kesirli kesme | Bir giriş/çıkış veya çıkış parametresi için döndürülen veriler, sayısal veri türünün kesirli kısmı kesilecek veya bir zaman, zaman damgası veya aralık veri türünün zaman bileşeninin kesirli kısmı kesilecek şekilde kesildi. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 07002 | COUNT alanı yanlış |
SQLBindParameter'da belirtilen parametre sayısı, *StatementText içinde yer alan SQL deyimindeki parametre sayısından azdı. SQLBindParameter , ParameterValuePtr null işaretçi olarak ayarlanmış , StrLen_or_IndPtr SQL_NULL_DATA veya SQL_DATA_AT_EXEC olarak ayarlanmamış ve InputOutputType SQL_PARAM_OUTPUT olarak ayarlanmadığından , SQLBindParameter'da belirtilen parametre sayısı *StatementText içinde yer alan SQL deyimindeki parametre sayısından daha fazlaydı. |
| 07006 | Kısıtlanmış veri türü özniteliği ihlali | İlişkili parametre için SQLBindParameter'daki ValueType bağımsız değişkeni tarafından tanımlanan veri değeri , SQLBindParameter'dakiParameterType bağımsız değişkeni tarafından tanımlanan veri türüne dönüştürülemedi. SQL_PARAM_INPUT_OUTPUT veya SQL_PARAM_OUTPUT olarak bağlanan bir parametre için döndürülen veri değeri, SQLBindParameter'dakiValueType bağımsız değişkeni tarafından tanımlanan veri türüne dönüştürülemedi. (Bir veya daha fazla satırın veri değerleri dönüştürülemediyse ancak bir veya daha fazla satır başarıyla döndürüldüyse, bu işlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 07007 | Kısıtlanmış parametre değeri ihlali | SQL_PARAM_INPUT_OUTPUT_STREAM parametre türü yalnızca parçalar halinde veri gönderen ve alan bir parametre için kullanılır. Bu parametre türü için giriş bağlı arabelleğe izin verilmez. Parametre türü SQL_PARAM_INPUT_OUTPUT olduğunda ve SQLBindParameter'da belirtilen *StrLen_or_IndPtr SQL_NULL_DATA, SQL_DEFAULT_PARAM, SQL_LEN_DATA_AT_EXEC(uzunluk) veya SQL_DATA_AT_EXEC eşit olmadığında bu hata oluşur. |
| 07S01 | Varsayılan parametrenin geçersiz kullanımı | SQLBindParameter ile ayarlanan parametre değeri SQL_DEFAULT_PARAM ve karşılık gelen parametrenin varsayılan değeri yoktu. |
| 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. |
| 21S01 | Değer listesi, sütun listesiyle eşleşmiyor | * StatementText bir INSERT ifade içeriyordu ve eklenecek değer sayısı türetilmiş tablonun derecesine uyuşmuyordu. |
| 21S02 | Türetilmiş tablonun derecesi sütun listesiyle eşleşmiyor | * StatementText bir CREATE VIEW ifade içeriyordu ve niteliksiz sütun listesi (SQL ifadesinin sütun-tanımlayıcı argümanlarında görünüm için belirtilen sütun sayısı), SQL ifadesinin sorgu-spesifikasyon argümanı tarafından tanımlanan türetilmiş tablodaki sütun sayısından daha fazla isim içeriyordu. |
| 22001 | Dize verileri, sağ kesme | Bir karakterin veya ikili değerin bir sütuna atanması, boş olmayan karakter verilerinin veya null olmayan ikili verilerin kesilmesiyle sonuçlandı. |
| 22002 | Gösterge değişkeni gerekli ancak sağlanmadı | NULL veriler, SQLBindParameter tarafından ayarlanan StrLen_or_IndPtr null işaretçisi olan bir çıkış parametresine bağlıydı. |
| 22003 | Sayısal değer aralık dışında |
*
StatementText , bağlı sayısal parametre veya değişmez değer içeren bir SQL deyimi içeriyordu ve değer, ilişkili tablo sütununa atandığında sayının tamamının (kesirlinin aksine) kesilmesine neden oldu. Bir veya daha fazla giriş/çıkış veya çıkış parametresi için sayısal bir değer (sayısal veya dize olarak) döndürülmek, sayının tamamının (kesirlinin aksine) kesilmesine neden olabilir. |
| 22007 | Geçersiz tarih saat biçimi |
*
StatementText , ilişkili parametre olarak tarih, saat veya zaman damgası yapısı içeren bir SQL deyimi içeriyordu ve parametre sırasıyla geçersiz bir tarih, saat veya zaman damgasıydı. Giriş/çıkış veya çıkış parametresi bir tarih, saat veya zaman damgası C yapısına bağlıydı ve döndürülen parametredeki bir değer sırasıyla geçersiz bir tarih, saat veya zaman damgasıydı. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 22008 | Tarih saat alanı taşması |
*
StatementText , hesaplandığında geçersiz bir tarih, saat veya zaman damgası yapısıyla sonuçlanan bir datetime ifadesi içeren bir SQL deyimi içeriyordu. Giriş/çıkış veya çıkış parametresi için hesaplanan datetime ifadesi geçersiz olan bir tarih, saat veya zaman damgası C yapısıyla sonuçlandı. |
| 22012 | Sıfıra bölme |
*
StatementText , sıfıra bölmeye neden olan bir aritmetik ifade içeren bir SQL deyimi içeriyordu. Giriş/çıkış veya çıkış parametresi için hesaplanan aritmetik ifade sıfıra bölünmesine neden oldu. |
| 22015 | Aralık alanı taşması |
*StatementText , bir aralık SQL veri türüne dönüştürüldüğünde önemli basamak kaybına neden olan tam bir sayısal veya aralık parametresi içeriyordu. *StatementText , bir sütundaki sayısal veri türüne dönüştürüldüğünde sayısal veri türünde gösterimi olmayan birden fazla alanı olan bir aralık parametresi içeriyordu. *StatementText , bir aralık SQL türüne atanan parametre verilerini içeriyordu ve aralık SQL türünde C türünün değerinin gösterimi yoktu. Tam bir sayısal veya aralık SQL türü olan bir giriş/çıkış veya çıkış parametresinin C aralığı türüne atanarak önemli basamak kaybına neden oldu. C aralığı yapısına bir giriş/çıkış veya çıkış parametresi atandığında, aralık veri yapısında verilerin gösterimi yoktu. |
| 22018 | Atama belirtimi için geçersiz karakter değeri |
*StatementText tam veya yaklaşık sayısal, tarih saat veya aralık veri türü olan bir C türü içeriyordu; sütunun SQL türü bir karakter veri türü idi; ve sütundaki değer, ilişkili C türünün geçerli bir değişmez değeri değildi. Bir giriş/çıkış veya çıkış parametresi döndürülürken, SQL türü tam veya yaklaşık bir sayısal, tarih saat veya aralık veri türü; C türü SQL_C_CHAR; ve sütundaki değer, ilişkili SQL türünün geçerli bir değişmez değeri değildi. |
| 22019 | Geçersiz çıkış karakteri | * StatementText, WHERE yan tümcesinde ESCAPE ile LIKE koşulu içeren bir SQL deyimi içeriyordu ve ESCAPE'i izleyen kaçış karakterinin uzunluğu 1'e eşit değildi. |
| 22025 | Geçersiz çıkış sırası | * StatementText, WHERE yan tümcesinde "LIKEdesen değeriESCAPEescape character" içeren bir SQL deyimi içeriyordu ve desen değerinde kaçış karakterini izleyen karakter "%" veya "_" karakterlerinden biri değildi. |
| 23000 | Bütünlük kısıtlaması ihlali | * StatementText , parametre veya değişmez değer içeren bir SQL deyimi içeriyordu. parametre değeri, ilişkili tablo sütununda NOT NULL olarak tanımlanan bir sütun için NULL idi, yalnızca benzersiz değerler içermesi kısıtlanmış bir sütun için yinelenen bir değer sağlandı veya başka bir bütünlük kısıtlaması ihlal edildi. |
| 24000 | Geçersiz imleç durumu |
SQLFetch veya SQLFetchScroll tarafından StatementHandle üzerinde bir imleç konumlandırıldı.
BU hata, SQLFetch veya SQLFetchScroll SQL_NO_DATA döndürmediyse Sürücü Yöneticisi tarafından döndürülür ve SQLFetch veya SQLFetchScroll SQL_NO_DATA döndürdüyse sürücü tarafından döndürülür. bir imleç açıktı ancak StatementHandle üzerinde konumlandırılmamıştı. * StatementText , konumlandırılmış bir update veya delete deyimi içeriyordu ve imleç sonuç kümesinin başlangıcından önce veya sonuç kümesinin sonundan sonra konumlandırıldı. |
| 34000 | Geçersiz imleç adı | * StatementText , konumlandırılmış bir update veya delete deyimi içeriyordu ve yürütülmekte olan deyimin başvurmuş olduğu imleç açık değildi. |
| 3D000 | Geçersiz katalog adı | StatementText içinde belirtilen katalog adı geçersizdi. |
| 3F000 | Geçersiz şema adı | StatementText içinde belirtilen şema adı geçersizdi. |
| 40001 | Serileştirme hatası | Başka bir işlemle kaynak kilitlenmesi nedeniyle işlem geri alındı. |
| 40003 | Deyim tamamlama bilinmiyor | İlişkili bağlantı bu işlevin yürütülmesi sırasında başarısız oldu ve işlemin durumu belirlenemiyor. |
| 42000 | Söz dizimi hatası veya erişim ihlali |
*
StatementText , hazırlanmamış bir SQL deyimi içeriyordu veya söz dizimi hatası içeriyordu. Kullanıcının *StatementText içinde yer alan SQL deyimini yürütme izni yoktu. |
| 42S01 | Temel tablo veya görünüm zaten var | * StatementText bir CREATE TABLE veya CREATE VIEW ifadesi içeriyordu ve belirtilen tablo adı veya görünüm adı zaten mevcuttu. |
| 42S02 | Temel tablo veya görünüm bulunamadı |
*
StatementText bir DROP TABLE veya bir DROP VIEW ifade içeriyordu ve belirtilen tablo adı veya görünüm adı mevcut değildi. * StatementText bir ALTER TABLE ifade içeriyordu ve belirtilen tablo adı yoktu. * StatementText bir CREATE VIEW ifade içeriyordu ve sorgu belirtisiyle tanımlanan bir tablo adı veya görünüm adı yoktu. * StatementText bir CREATE INDEX ifade içeriyordu ve belirtilen tablo adı yoktu. * StatementText bir GRANT veya REVOKE ifadesi içeriyordu ve belirtilen tablo adı veya görünüm adı mevcut değildi. * StatementText bir SELECT deyimi içeriyordu ve belirtilen tablo adı veya görünüm adı yoktu. * StatementText bir DELETE, INSERT, veya UPDATE ifade içerir ve belirtilen tablo adı mevcut değildir. * StatementText bir CREATE TABLE ifade içeriyordu ve bir kısıtlamada belirtilen bir tablo (oluşturulan tablodan başka bir tabloya atıfta bulunan) mevcut değildi. * StatementText bir CREATE SCHEMA ifade içeriyordu ve belirtilmiş bir tablo adı veya görünüm adı yoktu. |
| 42S11 | Dizin zaten var |
*
StatementText bir CREATE INDEX ifade içeriyordu ve belirtilen indeks adı zaten mevcuttu. * StatementText bir CREATE SCHEMA ifade içeriyordu ve belirtilen indeks adı zaten mevcuttu. |
| 42S12 | Dizin bulunamadı | * StatementText bir DROP INDEX ifade içeriyordu ve belirtilen indeks adı mevcut değildi. |
| 42S21 | Sütun zaten var | * StatementText bir ALTER TABLE ifade içeriyordu ve ADD maddesinde belirtilen sütun benzersiz değildir veya temel tabloda mevcut bir sütunu tanımlar. |
| 42S22 | Sütun bulunamadı |
*
StatementText bir CREATE INDEX ifade içeriyordu ve sütun listesinde belirtilen sütun adlarından biri veya birkaçının varlığı yoktu. * StatementText bir GRANT or REVOKE ifadesi içeriyordu ve belirli bir sütun adı yoktu. * StatementText bir SELECT, DELETE, INSERT, veya UPDATE ifade içeriyordu ve belirtilmiş bir sütun adı yoktu. * StatementText bir CREATE TABLE ifade içeriyordu ve bir kısıtlamada belirtilen sütun (oluşturulan tablo dışında bir tabloya atıfta bulunan) mevcut değildi. * StatementText bir CREATE SCHEMA ifade içeriyordu ve belirtilmiş bir sütun adı yoktu. |
| 44000 | CHECK OPTION ihlali ILE |
StatementTextINSERT argümanı, görüntülenen bir tabloda veya görüntülenen tablodan türetilen ve WITH CHECK OPTION'u belirterek oluşturulan bir tabloda yapılan bir ifade içeriyordu; böylece ifadeden INSERT etkilenen bir veya daha fazla satır artık görüntülenen tabloda bulunmaz. StatementTextUPDATE argümanı, görüntülenen bir tabloda veya görüntülenen tablodan türetilen ve WITH CHECK OPTION'u belirterek oluşturulan bir tabloda yapılan bir ifade içeriyordu; böylece ifadeden UPDATE etkilenen bir veya daha fazla satır artık görüntülenen tabloda bulunmaz. |
| 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ı. |
| HY008 | İşlem iptal edildi |
StatementHandle için zaman uyumsuz işleme etkinleştirildi. İşlev çağrıldı ve yürütme tamamlanmadan önce StatementHandle üzerinde SQLCancel veya SQLCancelHandle çağrıldı. Ardından işlev StatementHandle üzerinde yeniden ç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ı. |
| HY009 | Geçersiz null işaretçi kullanımı | (DM) *StatementText null bir işaretçiydi. |
| 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ı.
SQLExecDirect işlevi çağrıldığında bu zaman uyumsuz işlev hala yürütülü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) 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ı. |
| 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) TextLength bağımsız değişkeni 0'a eşit veya 0'a eşitti ancak SQL_NTS eşit değildi. SQLBindParameter ile ayarlanan parametre değeri null bir işaretçiydi ve parametre uzunluğu değeri 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM veya SQL_LEN_DATA_AT_EXEC_OFFSET küçük veya buna eşit değildi. SQLBindParameter ile ayarlanan parametre değeri null işaretçi değildi; C veri türü SQL_C_BINARY veya SQL_C_CHAR; ve parametre uzunluğu değeri 0'dan küçüktür ancak SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM veya SQL_LEN_DATA_AT_EXEC_OFFSET küçük ya da buna eşit değildir. SQLBindParameter tarafından bağlanan parametre uzunluğu değeri SQL_DATA_AT_EXEC olarak ayarlandı; SQL türü SQL_LONGVARCHAR, SQL_LONGVARBINARY veya uzun bir veri kaynağına özgü veri türü; ve SQLGetInfo'daki SQL_NEED_LONG_DATA_LEN bilgi türü "Y" idi. |
| HY105 | Geçersiz parametre türü | SQLBindParameter'daInputOutputType bağımsız değişkeni için belirtilen değer SQL_PARAM_OUTPUT ve parametre bir giriş parametresiydi. |
| HY109 | Geçersiz imleç konumu | * StatementText , konumlandırılmış bir güncelleştirme veya silme deyimi içeriyordu ve imleç silinmiş veya getirilemeyen bir satıra ( SQLSetPos veya SQLFetchScroll tarafından) konumlandırıldı. |
| 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ı | SQL_ATTR_CONCURRENCY ve SQL_ATTR_CURSOR_TYPE deyimi özniteliklerinin geçerli ayarlarının birleşimi sürücü veya veri kaynağı tarafından desteklenmiyordu. SQL_ATTR_USE_BOOKMARKS deyimi özniteliği SQL_UB_VARIABLE olarak, SQL_ATTR_CURSOR_TYPE deyimi özniteliği ise sürücünün yer işaretlerini desteklemediği bir imleç türüne ayarlandı. |
| 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ı süresi SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT aracılığıyla ayarlanır. |
| 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. |
| IM017 | Yoklama zaman uyumsuz bildirim modunda devre dışı bırakıldı | Bildirim modeli her kullanıldığında yoklama devre dışı bırakılır. |
| IM018 | SQLCompleteAsync , bu tanıtıcıda önceki zaman uyumsuz işlemi tamamlamak için çağrılmadı. | Tanıtıcıdaki önceki işlev çağrısı SQL_STILL_EXECUTING döndürüyorsa ve bildirim modu etkinleştirildiyse, son işlemeyi yapmak ve işlemi tamamlamak için tanıtıcıda SQLCompleteAsync çağrılmalıdır. |
Comments
SqlExecDirect'i çağırarak veri kaynağına bir SQL deyimi gönderirsiniz. Doğrudan yürütme hakkında daha fazla bilgi için bkz. Doğrudan Yürütme. Sürücü, deyimini veri kaynağının kullandığı SQL biçimini kullanacak şekilde değiştirir ve ardından veri kaynağına gönderir. Özellikle, sürücü SQL'deki belirli özellikleri tanımlamak için kullanılan kaçış dizilerini değiştirir. Kaçış dizilerinin söz dizimi için bkz. ODBC'de Kaçış Dizileri.
SQL deyimine bir veya daha fazla parametre işaretçisi ekleyebilirsiniz. Parametre işaretçisi eklemek için SQL deyimine uygun konumda bir soru işareti (?) ekleyin. Parametreler hakkında bilgi için bkz. Deyim Parametreleri.
Sonuç kümesi döndüren (select deyimi gibi) SQLExecDirect'e yapılan başarılı bir çağrıdan sonra, deyim tanıtıcısı sonuç kümesinin ilk satırından önce konumlandırılır. Daha sonra satır almak için SQLFetch veya SQLFetchScroll çağırabilir veya , , veya DELETE ifadeler için etkilenen satır INSERTUPDATEsayısını belirlemek için SQLRowCount çağırabilirsiniz.
SQL deyimi bir SELECT deyimiyse ve bir imleci bir deyimle ilişkilendirmek için SQLSetCursorName çağırdıysanız, sürücü belirtilen imleci kullanır. Aksi takdirde, sürücü bir imleç adı oluşturur.
Veri kaynağı el ile işleme modundaysa (açık işlem başlatma gerektiren) ve henüz bir işlem başlatılmadıysa, sürücü SQL deyimini göndermeden önce bir işlem başlatır. Daha fazla bilgi için bkz. Manual-Commit Modu.
COMMIT veya ROLLBACK deyimi göndermek için SQLExecDirect kullanırsanız, DBMS ürünleri arasında birlikte çalışamaz. Bir işlemi işlemek veya geri almak için SQLEndTran'ı çağırin.
SQLExecDirect bir yürütme sırasında veri parametresiyle karşılaşırsa SQL_NEED_DATA döndürür. SQLParamData ve SQLPutData kullanarak verileri gönderin. Bkz . SQLBindParameter, SQLParamData, SQLPutData ve Gönderme Uzun Veri.
SQLExecDirect, veri kaynağındaki hiçbir satırı etkilemeyen bir arama güncelleştirmesi, ekleme veya silme deyimi yürütürse, SQLExecDirect çağrısı SQL_NO_DATA döndürür.
SQL_ATTR_PARAMSET_SIZE deyimi özniteliğinin değeri 1'den büyükse ve SQL deyimi en az bir parametre işaretçisi içeriyorsa SQLExecDirect, SQLBindParameter çağrısında ParameterValuePointer bağımsız değişkeni tarafından işaret edilen dizilerden her parametre değeri kümesi için SQL deyimini bir kez yürütür. Daha fazla bilgi için bkz. Parametre Değerleri Dizileri.
Yer işaretleri açıksa ve yer işaretlerini desteklemeyen bir sorgu yürütülürse, sürücü bir öznitelik değerini değiştirip SQLSTATE 01S02 döndürerek (Seçenek değeri değiştirildi) yer işaretlerini destekleyen bir ortamla zorlamayı denemelidir. Öznitelik değiştirilemiyorsa, sürücü SQLSTATE HY024 (Geçersiz öznitelik değeri) döndürmelidir.
Uyarı
Bağlantı havuzu kullanırken, SQL Server'daki USEveritabanı deyimi gibi veritabanını veya veritabanının bağlamını değiştiren SQL deyimlerini yürüterek veri kaynağı tarafından kullanılan kataloğu değiştirmeyin.
Kod Örneği
Bkz . SQLBindCol, SQLGetData ve Örnek ODBC Programı.
İlgili Fonksiyonlar
| Hakkında bilgi için | Bkz: |
|---|---|
| Sonuç kümesindeki bir sütuna arabellek bağlama | SQLBindCol İşlevi |
| Deyim işlemeyi iptal etme | SQLCancel İşlevi |
| İşleme veya geri alma işlemini yürütme | SQLEndTran İşlevi |
| Hazırlanmış bir SQL deyimini yürütme | SQLExecute İşlevi |
| Birden çok veri satırı getirme | SQLFetch İşlevi |
| Veri bloğunu getirme veya sonuç kümesinde kaydırma | SQLFetchScroll İşlevi |
| İmleç adı döndürme | SQLGetCursorName İşlevi |
| Veri sütununun bir bölümünü veya tamamını getirme | SQLGetData İşlevi |
| Veri göndermek için sonraki parametreyi döndürme | SQLParamData İşlevi |
| Bir deyimi yürütme için hazırlama | SQLPrepare İşlevi |
| Yürütme zamanında parametre verileri gönderme | SQLPutData İşlevi |
| İmleç adı ayarlama | SQLSetCursorName İşlevi |
| Deyim özniteliğini ayarlama | SQLSetStmtAttr İşlevi |