Aracılığıyla paylaş


SQLExecDirect İşlevi

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 deyimi içeriyordu ve kullanıcının belirtilen ayrıcalığı yoktu. (İşlev SQL_SUCCESS_WITH_INFO döndürür.)
01007 Ayrıcalık verilmedi *StatementText bir GRANT deyimiydi ve kullanıcıya belirtilen ayrıcalığı veremedi.
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 deyimi içeriyordu ve eklenecek değerlerin sayısı türetilen tablonun derecesiyle eşleşmedi.
21S02 Türetilmiş tablonun derecesi sütun listesiyle eşleşmiyor * StatementText bir CREATE VIEW deyimi içeriyordu ve nitelenmemiş sütun listesi (SQL deyiminin sütun tanımlayıcı bağımsız değişkenlerinde görünüm için belirtilen sütun sayısı), SQL deyiminin sorgu belirtimi bağımsız değişkeni tarafından tanımlanan türetilmiş tablodaki sütun sayısından daha fazla ad 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 deyimi içeriyordu ve belirtilen tablo adı veya görünüm adı zaten var.
42S02 Temel tablo veya görünüm bulunamadı * StatementText bir DROP TABLE veya DROP VIEW deyimi içeriyordu ve belirtilen tablo adı veya görünüm adı yoktu.

* StatementText bir ALTER TABLE deyimi içeriyordu ve belirtilen tablo adı yoktu.

* StatementText bir CREATE VIEW deyimi içeriyordu ve sorgu belirtimi tarafından tanımlanan bir tablo adı veya görünüm adı yoktu.

* StatementText bir CREATE INDEX deyimi içeriyordu ve belirtilen tablo adı yoktu.

* StatementText bir GRANT veya REVOKE deyimi 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 deyimi içeriyordu ve belirtilen tablo adı mevcut değildi.

* StatementText bir CREATE TABLE deyimi içeriyordu ve kısıtlamada belirtilen bir tablo (oluşturulan tablo dışında bir tabloya başvuruyor) mevcut değildi.

* StatementText bir CREATE SCHEMA deyimi içeriyordu ve belirtilen tablo adı veya görünüm adı yoktu.
42S11 Dizin zaten var * StatementText bir CREATE INDEX deyimi içeriyordu ve belirtilen dizin adı zaten vardı.

* StatementText bir CREATE SCHEMA deyimi içeriyordu ve belirtilen dizin adı zaten vardı.
42S12 Dizin bulunamadı * StatementText bir DROP INDEX deyimi içeriyordu ve belirtilen dizin adı yoktu.
42S21 Sütun zaten var * StatementText bir ALTER TABLE deyimi içeriyordu ve ADD yan tümcesinde belirtilen sütun benzersiz değil veya temel tabloda var olan bir sütunu tanımlar.
42S22 Sütun bulunamadı * StatementText bir CREATE INDEX deyimi içeriyordu ve sütun listesinde belirtilen sütun adlarından biri veya daha fazlası yoktu.

* StatementText bir GRANT veya REVOKE deyimi içeriyordu ve belirtilen sütun adı yoktu.

* StatementText bir SELECT, DELETE, INSERT veya UPDATE deyimi içeriyordu ve belirtilen sütun adı yoktu.

* StatementText bir CREATE TABLE deyimi içeriyordu ve kısıtlamada belirtilen bir sütun (oluşturulan tablo dışında bir tabloya başvuruyor) yoktu.

* StatementText bir CREATE SCHEMA deyimi içeriyordu ve belirtilen sütun adı yoktu.
44000 CHECK OPTION ihlali ILE StatementText bağımsız değişkeni, görüntülenen tablo üzerinde gerçekleştirilen bir INSERT deyimi veya GÖRÜNTÜLENEN tablodan türetilen ve INSERT deyiminden etkilenen bir veya daha fazla satırın artık görüntülenen tabloda yer almaması için, İLE ONAY SEÇİCİSİ belirtilerek oluşturulmuş bir tablo içeriyordu.

StatementText bağımsız değişkeni, görüntülenen tabloda gerçekleştirilen bir UPDATE deyimini veya görüntülenen tablodan türetilmiş olan ve UPDATE deyiminden etkilenen bir veya daha fazla satırın artık görüntülenen tabloda yer almaması gibi, WITH CHECK OPTION belirtilerek oluşturulmuş bir tablo içeriyordu.
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ırları almak için SQLFetch veya SQLFetchScroll çağırabilir veya INSERT, UPDATE veya DELETE deyimleri için etkilenen satır sayı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ı.

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

ODBC API Başvurusu
ODBC Üst Bilgi Dosyaları