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
Summary
SQLCancel, bir özet üzerindeki işlemeyi iptal eder.
Bir bağlantı veya ifadede işlemeyi iptal etmek için SQLCancelHandle Fonksiyonu kullanın.
Syntax
SQLRETURN SQLCancel(
SQLHSTMT StatementHandle);
Arguments
StatementHandle
[Giriş] Deyim tanıtıcısı.
İadeler
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR veya SQL_INVALID_HANDLE.
Diagnostics
SQLCancel SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri alınabilir; bu değer SQLGetDiagRec ile SQL_HANDLE_STMT HandleType ve StatementHandleile çağrılabilir. Aşağıdaki tablo, SQLCancel 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.) |
| HY000 | Genel hata | Belirli bir SQLSTATE olmayan ve uygulamaya özgü SQLSTATE tanımlanmayan bir hata oluştu. SQLGetDiagRec tarafından *MessageText buffer argümanında geri dönen hata mesajı, hatayı ve nedenini tanımlar. |
| 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ı. |
| 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ı. Bu asenkron fonksiyon SQLCancel fonksiyonu çağrıldığında hâlâ çalışıyordu. (DM) İptal işlemi başarısız oldu çünkü StatementHandle ile ilişkilendirilmiş bir bağlantı kolunda asenkron bir işlem devam ediyor. |
| 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. |
| HY018 | Sunucu iptal başvurusunu reddetti | Sunucu iptal talebini reddetti. |
| 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) StatementHandle ile ilişkili sürücü işlevi desteklemiyor. |
Comments
SQLCancel, bir ifadede aşağıdaki işlem türlerini iptal edebilir:
Bir fonksiyon ifadede asenkron olarak çalışıyor.
Veri gerektiren bir ifadede bir fonksiyon.
Başka bir iş parçacığında ifade üzerinde çalışan bir fonksiyon.
ODBC 2'de. x, bir uygulama özlem üzerinde işlem yapılmadığında SQLCancel'i çağırırsa, SQLCancel , SQL_CLOSE seçeneğiyle SQLFreeStmt ile aynı etkiye sahiptir; bu davranış yalnızca tamlık için tanımlanır ve uygulamalar imleçleri kapatmak için SQLFreeStmt veya SQLCloseCursor'u çağırmalıdır.
SQLCancel, bir ifade veya veri gerektiren bir ifade üzerindeki fonksiyonu asenkron olarak iptal etmek için çağrıldığında, iptal edilen fonksiyon tarafından gönderilen tanı kayıtları temizlenir ve SQLCancel kendi tanı kayıtlarını paylaşır; Ancak SQLCancel, başka bir iş parçacığında çalışan bir özetle çalışan bir fonksiyonu iptal etmek için çağrıldığında, iptal edilen fonksiyonun tanı kayıtlarını temizlemez ve kendi tanı kayıtlarını yayınlamaz.
Asenkron İşlemenin İptal Edilmesi
Bir uygulama bir fonksiyonu asenkron olarak çağırdıktan sonra, işlemin tamamlanıp tamamlanmadığını belirlemek için fonksiyonu tekrar tekrar çağırır. Fonksiyon hâlâ işleniyorsa, SQL_STILL_EXECUTING döndürür. Fonksiyon işlemi tamamlandıysa, farklı bir kod döndürür.
SQL_STILL_EXECUTING döndüren herhangi bir fonksiyon çağrısından sonra, bir uygulama fonksiyonu iptal etmek için SQLCancel çağırabilir. İptal talebi başarılı olursa, sürücü SQL_SUCCESS geri döner. Bu ileti işlevin gerçekten iptal edilmiş olduğunu göstermez; iptal isteğinin işlendiğini gösterir. Fonksiyonun gerçekten iptal edildiği veya ne zaman iptal edildiği sürücüye ve veri kaynağına bağlıdır. Uygulama, dönüş kodu SQL_STILL_EXECUTING kalmayana kadar orijinal fonksiyonu çağırmaya devam etmelidir. Fonksiyon başarıyla iptal edildiyse, dönüş kodu SQL_ERROR ve SQLSTATE HY008 (İşlem iptal edildi) olur. Fonksiyon normal işlemesini tamamladıysa, dönüş kodu SQL_SUCCESS veya fonksiyon başarılıysa SQL_SUCCESS_WITH_INFO veya SQL_ERROR olur ve fonksiyon başarısız olursa HY008 (İşlem iptal edildi) dışında bir SQLSTATE olur.
Note
ODBC 3.5'te, herhangi bir işlem yapılmadığında SQLCancel'e yapılan bir çağrı, SQL_CLOSE seçeneğiyle SQLFreeStmt olarak kabul edilmez, ancak hiçbir etkisi yoktur. İmleci kapatmak için bir uygulama SQLCancel'i değil SQLCloseCursor'ı çağırmalıdır.
Asenkron işlem hakkında daha fazla bilgi için Asenkron Yürütme bölümüne bakınız.
Veri İhtiyacı Fonksiyonları İptal Etmek
SQLExecute veya SQLExecDirect SQL_NEED_DATA döndürdükten sonra ve tüm yürütme verilerindeki veriler gönderilmeden önce, bir uygulama SQL Ancel çağırarak ifade yürütmesini iptal edebilir. Ifade iptal edildikten sonra, uygulama tekrar SQLExecute veya SQLExecDirect çağırabilir. Daha fazla bilgi için SQLBindParameter'e bakınız.
SQLBulkOperations veya SQLSetPos SQL_NEED_DATA döndürdükten sonra ve tüm veri gönderme sütunları için veri gönderilmeden önce, bir uygulama SQLCancel'i çağırarak işlemi iptal edebilir. İşlem iptal edildikten sonra uygulama tekrar SQLBulkOperations veya SQLSetPos çağırabilir; İptal etmek imleç durumunu veya mevcut imleç pozisyonunu etkilemez. Daha fazla bilgi için SQLBulkOperations veya SQLSetPos'a bakınız.
Başka bir iş parçacığında çalıştırılan fonksiyonların iptal edilmesi
Çok iş parçacıklı bir uygulamada, uygulama başka bir iş parçacığında çalışan bir fonksiyonu iptal edebilir. Fonksiyonu iptal etmek için, uygulama hedef fonksiyonun kullandığı aynı ifade koluyla SQLCancel'i çağırır, ancak farklı bir iş parçacığında. Fonksiyonun nasıl iptal edileceği sürücüye ve işletim sistemine bağlıdır. Asenkron çalışan bir fonksiyonu iptal ederken, SQLCancel'in dönüş kodu yalnızca sürücünün talebi başarılı bir şekilde işlediğini gösterir. Sadece SQL_SUCCESS veya SQL_ERROR geri verilebilir; Herhangi bir tanı bilgisi geri dönmez. Orijinal fonksiyon iptal edilirse, SQL_ERROR ve SQLSTATE HY008 (İşlem iptal edildi) döner.
Eğer SQL ifadesi çalıştırılırsa ve başka bir iş parçacığında SQLCancel çağrılıp ifade çalıştırmasını iptal etmek için çağrılırsa, yürütmenin başarılı olup iptal işlemi başarılırken SQL_SUCCESS geri dönmesi mümkündür. Bu durumda, Sürücü Yöneticisi, ifade çalıştırma ile açılan imlecin iptal ile kapandığını varsayar, bu yüzden uygulama imleci kullanamaz.
İş parçacığı hakkında daha fazla bilgi için Multithreading'e bakınız.
İlgili Fonksiyonlar
| Hakkında bilgi için | Bkz: |
|---|---|
| Bir tamponu bir parametreye bağlama | SQLBindParameter Fonksiyonu |
| Toplu ekleme veya güncelleme işlemleri yapılması | SQLBulkOperations Fonksiyonu |
| Bağlantı kolunda asenkron olarak çalışan bir fonksiyonu ve SQLCancel'in işlevselliğini iptal eder. | SQLCancelHandle Fonksiyonu |
| SQL ifadesinin yürütülmesi | SQLExecDirect Fonksiyonu |
| Hazırlanmış bir SQL deyimini yürütme | SQLExecute İşlevi |
| Bir ifade tutamacının serbest bırakılması | Sqlfreestmt |
| Tanı kaydının bir alanını veya tanı başlığının bir alanını elde etmek | SQLGetDiagField Fonksiyonu |
| Tanılama veri yapısının birden çok alanını alma | SQLGetDiagRec İşlevi |
| Veri göndermek için sonraki parametreyi döndürme | SQLParamData İşlevi |
| Yürütme zamanında parametre verileri gönderme | SQLPutData İşlevi |
| İmleci bir satır kümesinde konumlandırmak, satır kümesinde veriyi yenilemek veya sonuç kümesindeki verileri güncellemek veya silmek | SQLSetPos Fonksiyonu |