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.
uyumluluk
Kullanıma Sunulan Sürüm: ODBC 1.0 Standartları Uyumluluğu: ISO 92
Özeti
SQLSetCursorName bir imleç adını etkin bir deyimle ilişkilendirir. Bir uygulama SQLSetCursorNameçağırmazsa, sürücü SQL deyiminin işlenmesi için gereken imleç adlarını oluşturur.
Sözdizimi
SQLRETURN SQLSetCursorName(
SQLHSTMT StatementHandle,
SQLCHAR * CursorName,
SQLSMALLINT NameLength);
Bağımsız değişken
StatementHandle
[Giriş] Deyim tanıtıcısı.
CursorName
[Giriş] İmleç adı. Verimli işleme için, imleç adı imleç adında baştaki veya sondaki boşlukları içermemelidir ve imleç adı sınırlandırılmış bir tanımlayıcı içeriyorsa, sınırlayıcı imleç adında ilk karakter olarak konumlandırılmalıdır.
NameLength
[Giriş] *CursorNamekarakterlerinde uzunluk.
Döndürür
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR veya SQL_INVALID_HANDLE.
Tanılama
SQLSetCursorName SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, SQL_HANDLE_STMT HandleType ve StatementHandleHandle ile SQLGetDiagRec çağrılarak ilişkili bir SQLSTATE değeri elde edilebilir. Aşağıdaki tabloda, SQLSetCursorName tarafından yaygın olarak döndürülen SQLSTATE değerleri listelenir 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 | Açıklama |
|---|---|---|
| 01000 | Genel uyarı | Sürücüye özgü bilgilendirici ileti. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 01004 | Dize verileri, sağ kesilmiş | İmleç adı üst sınırı aştı, bu nedenle yalnızca izin verilen karakter sayısı üst sınırı kullanıldı. |
| 24000 | Geçersiz imleç durumu | StatementHandle karşılık gelen deyim zaten yürütülmüş veya imleç konumlandırılmış durumdaydı. |
| 34000 | Geçersiz imleç adı | *CursorName içinde belirtilen imleç adı, sürücü tarafından tanımlanan uzunluk üst sınırını aştığından veya "SQLCUR" veya "SQL_CUR" ile başladığından geçersizdi. |
| 3C000 | Yinelenen imleç adı | *CursorName içinde belirtilen imleç adı zaten var. |
| HY000 | Genel hata | Belirli bir SQLSTATE olmayan ve uygulamaya özgü SQLSTATE tanımlanmayan bir hata oluştu. *MessageText arabelleğindeki 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) CursorName |
| HY010 | İşlev dizisi hatası | (DM) StatementHandleile ilişkili bağlantı tanıtıcısı için zaman uyumsuz olarak yürütülen bir işlev çağrıldı.
SQLSetCursorName işlevi çağrıldığında bu zaman uyumsuz işlev hala yürütülüyordu. (DM) StatementHandle için zaman uyumsuz olarak yürütülen bir işlev çağrıldı ve bu işlev çağrıldığında hala yürütülüyordu. (DM) SQLExecute, SQLExecDirect, SQLBulkOperationsveya 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) NameLength |
| 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 alma 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 SQLSetConnectAttrSQL_ATTR_CONNECTION_TIMEOUT üzerinden ayarlanır. |
| IM001 | Sürücü bu işlevi desteklemiyor | (DM) StatementHandle ile ilişkili sürücü işlevi desteklemiyor. |
Yorum
İmleç adları yalnızca konumlanmış güncelleştirme ve silme deyimlerinde kullanılır (örneğin, UPDATEtablo-adı ...WHERE CURRENT OFimleç-adı). Daha fazla bilgi için bkz. Konumlanmış Güncelleştirme ve Silme Deyimleri. Uygulama bir imleç adı tanımlamak için SQLSetCursorName çağırmazsa, sorgu deyiminin yürütülmesinde sürücü SQL_CUR harfleriyle başlayan ve uzunluğu 18 karakteri aşmayan bir ad oluşturur.
Bağlantıdaki tüm imleç adları benzersiz olmalıdır. İmleç adının uzunluk üst sınırı sürücü tarafından tanımlanır. Birlikte çalışabilirlik üst sınırı için uygulamaların imleç adlarını en fazla 18 karakterle sınırlaması önerilir. ODBC 3*.x*'te, bir imleç adı tırnak içine alınmış bir tanımlayıcıysa, büyük/küçük harfe duyarlı bir şekilde ele alınır ve SQL söz diziminin izin vermeyeceğini veya boşluklar veya ayrılmış anahtar sözcükler gibi özel olarak işleyebilecek karakterler içerebilir. İmleç adı büyük/küçük harfe duyarlı bir şekilde ele alınmalıdır, tırnak içinde tanımlayıcı olarak geçirilmelidir.
SQLFreeHandle
Kod Örneği
Aşağıdaki örnekte bir uygulama SQLSetCursorName kullanarak bir deyim için imleç adı ayarlar. Daha sonra CUSTOMERS tablosundan sonuçları almak için bu deyimi kullanır. Son olarak, John Smith'in telefon numarasını değiştirmek için konumlandırılmış bir güncelleştirme gerçekleştirir. Uygulamanın
Başka bir kod örneği için bkz. SQLSetPos
#define NAME_LEN 50
#define PHONE_LEN 10
SQLHSTMT hstmtSelect,
SQLHSTMT hstmtUpdate;
SQLRETURN retcode;
SQLHDBC hdbc;
SQLCHAR szName[NAME_LEN], szPhone[PHONE_LEN];
SQLINTEGER cbName, cbPhone;
/* Allocate the statements and set the cursor name. */
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmtSelect);
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmtUpdate);
SQLSetCursorName(hstmtSelect, "C1", SQL_NTS);
/* SELECT the result set and bind its columns to local buffers. */
SQLExecDirect(hstmtSelect,
"SELECT NAME, PHONE FROM CUSTOMERS",
SQL_NTS);
SQLBindCol(hstmtSelect, 1, SQL_C_CHAR, szName, NAME_LEN, &cbName);
SQLBindCol(hstmtSelect, 2, SQL_C_CHAR, szPhone, PHONE_LEN, &cbPhone);
/* Read through the result set until the cursor is */
/* positioned on the row for John Smith. */
do
retcode = SQLFetch(hstmtSelect);
while ((retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) &&
(strcmp(szName, "Smith, John") != 0));
/* Perform a positioned update of John Smith's name. */
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
SQLExecDirect(hstmtUpdate,
"UPDATE EMPLOYEE SET PHONE=\"2064890154\" WHERE CURRENT OF C1",
SQL_NTS);
}
İlgili İşlevler
| Hakkında bilgi için | Görmek |
|---|---|
| SQL deyimi yürütme | SQLExecDirect İşlevi |
| Hazırlanmış bir SQL deyimini yürütme | SQLExecute İşlevi |
| İmleç adı döndürme | SQLGetCursorName İşlevi |
| İmleç kaydırma seçeneklerini ayarlama | SQLSetScrollOptions İşlevi |
Ayrıca Bkz.
ODBC API Başvurusu
ODBC Üst Bilgi Dosyaları