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
Sözdizimi
SQLRETURN SQLGetData(
SQLHSTMT StatementHandle,
SQLUSMALLINT Col_or_Param_Num,
SQLSMALLINT TargetType,
SQLPOINTER TargetValuePtr,
SQLLEN BufferLength,
SQLLEN * StrLen_or_IndPtr);
Bağımsız değişken
StatementHandle
[Giriş] Deyim tanıtıcısı.
Col_or_Param_Num
[Giriş] Sütun verilerini almak için, veri döndürülecek sütunun sayısıdır. Sonuç kümesi sütunları, 1'den başlayarak artan sütun sırasına göre numaralandırılır. Yer işareti sütunu 0 numaralı sütundur; bu yalnızca yer işaretleri etkinse belirtilebilir.
Parametre verilerini almak için, parametrenin 1'de başlayan sıra değeridir.
TargetType
[Giriş] *TargetValuePtr arabelleğinin C veri türünün tür tanımlayıcısı. Geçerli C veri türlerinin ve tür tanımlayıcılarının listesi için Ek D: Veri Türleri'ndeki C Veri Türleri bölümüne bakın.
TargetType SQL_ARD_TYPE ise, sürücü ARD'nin SQL_DESC_CONCISE_TYPE alanında belirtilen tür tanımlayıcısını kullanır.
TargetType SQL_APD_TYPE SQLGetData, SQLBindParameteriçinde belirtilen C veri türünü kullanır. Aksi takdirde, sqlgetdata
Genişletilmiş bir C veri türü de belirtebilirsiniz. Daha fazla bilgi için bkz. ODBC
TargetValuePtr
[Çıkış] Verilerin döndürüleceği arabelleğe ilişkin işaretçi.
TargetValuePtr NULL olamaz.
BufferLength
[Giriş] *TargetValuePtr arabelleğinin bayt cinsinden uzunluğu.
Sürücü, karakter veya ikili veriler gibi değişken uzunlukta veriler döndürürken *TargetValuePtr arabelleğinin sonuna yazmamak için BufferLength kullanır. Sürücü, karakter verilerini *TargetValuePtrdöndürürken null sonlandırma karakterini sayar. * TargetValuePtr bu nedenle null sonlandırma karakteri için alan içermelidir, aksi takdirde sürücü verileri kesecektir.
Sürücü tamsayı veya tarih yapısı gibi sabit uzunlukta veriler döndürdüğünde, sürücü bufferLength
BufferLength 0'dan küçükse ancak BufferLength 0 olduğunda sqlstate HY090 (Geçersiz dize veya arabellek uzunluğu) SQLGetData döndürür.
StrLen_or_IndPtr
[Çıkış] Uzunluk veya gösterge değerinin döndürüleceği arabelleğe ilişkin işaretçi. Bu null bir işaretçiyse, uzunluk veya gösterge değeri döndürülür. Bu, getirilen veriler NULL olduğunda bir hata döndürür.
SQLGetData
Döndürülecek verilerin uzunluğu
SQL_NO_TOTAL
SQL_NULL_DATA
Daha fazla bilgi için bu konudaki Uzunluk/Gösterge Değerlerini Kullanma ve "Açıklamalar"
Döndürür
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_STILL_EXECUTING, SQL_ERROR veya SQL_INVALID_HANDLE.
Tanılama
SQLGetData
| 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ş | belirtilen sütunun Col_or_Param_Numtüm verileri işleve yapılan tek bir çağrıda alınamadı. SQL_NO_TOTAL veya geçerli SQLGetData çağrısından önceki belirtilen sütunda kalan verilerin uzunluğu *StrLen_or_IndPtriçinde döndürülür. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) Tek bir sütun için sqlgetdata |
| 01S07 | Kesirli kesme | Bir veya daha fazla sütun için döndürülen veriler kesildi. Sayısal veri türleri için sayının kesirli kısmı kesildi. Zaman bileşeni içeren zaman, zaman damgası ve aralık veri türleri için, zamanın kesirli kısmı kesildi. (İşlev SQL_SUCCESS_WITH_INFO döndürür.) |
| 07006 | Kısıtlanmış veri türü özniteliği ihlali | Sonuç kümesindeki bir sütunun veri değeri, TargetTypebağımsız değişkeni tarafından belirtilen C veri türüne dönüştürülemez. |
| 07009 | Geçersiz tanımlayıcı dizini |
Col_or_Param_Num bağımsız değişkeni için belirtilen değer 0'dı ve SQL_ATTR_USE_BOOKMARKS deyimi özniteliği SQL_UB_OFF olarak ayarlandı. Col_or_Param_Num bağımsız değişkeni için belirtilen değer, sonuç kümesindeki sütun sayısından fazlaydı. Col_or_Param_Num değeri, kullanılabilir parametrenin sıralı değerine eşit değildi. (DM) Belirtilen sütun bağlıydı. Bu açıklama, sqlgetinfo (DM) Belirtilen sütunun sayısı en yüksek ilişkili sütunun sayısından küçük veya buna eşitti. Bu açıklama, sqlgetinfo (DM) Uygulama zaten geçerli satır için (DM) TargetType bağımsız değişkeni SQL_ARD_TYPE ve ARD'deki Col_or_Param_Num tanımlayıcı kaydı tutarlılık denetiminde başarısız oldu. (DM) TargetType bağımsız değişkeni SQL_ARD_TYPE ve ARD'nin SQL_DESC_COUNT alanındaki değer Col_or_Param_Num bağımsız değişkenden küçüktür. |
| 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. |
| 22002 | Gösterge değişkeni gerekli ancak sağlanmadı | StrLen_or_IndPtr null bir işaretçiydi ve NULL veriler alındı. |
| 22003 | Sayısal değer aralık dışında | Sütunun sayısal değerini (sayısal veya dize olarak) döndürmek sayının tamamının (kesirlinin aksine) kesilmesine neden olabilir. Daha fazla bilgi için bkz. Ek D: Veri Türleri. |
| 22007 | Geçersiz tarih saat biçimi | Sonuç kümesindeki karakter sütunu C tarih, saat veya zaman damgası yapısına bağlıydı ve sütundaki değer sırasıyla geçersiz bir tarih, saat veya zaman damgasıydı. Daha fazla bilgi için bkz. Ek D: Veri Türleri. |
| 22012 | Sıfıra bölme | Aritmetik ifadeden sıfıra bölmeyle sonuçlanan bir değer döndürüldü. |
| 22015 | Aralık alanı taşması | Tam bir sayısal veya aralık SQL türünden C aralığı türüne atama, baştaki alanda önemli basamak kaybına neden oldu. Verileri bir C aralığına döndürürken, C aralığında SQL türünün değerinin gösterimi yoktu. |
| 22018 | Atama belirtimi için geçersiz karakter değeri | Sonuç kümesindeki bir karakter sütunu bir C karakteri arabelleğine döndürüldü ve sütun, arabelleğin karakter kümesinde gösterimi olmayan bir karakter içeriyordu. C türü tam veya yaklaşık bir sayısal, tarih saat veya aralık veri türü idi; 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. |
| 24000 | Geçersiz imleç durumu | (DM) İşlev, ilk olarak (DM) StatementHandle yürütüldü, ancak StatementHandleile hiçbir sonuç kümesi ilişkilendirilmemiş. |
| 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ı. |
| HY003 | Program türü aralık dışında | (DM) TargetType (DM) |
| HY008 | İşlem iptal edildi |
StatementHandleiçin zaman uyumsuz işleme etkinleştirildi. İşlev çağrıldı ve yürütmeyi tamamlamadan önce SQLCancel veya İşlev çağrıldı ve yürütmeyi tamamlamadan önce SQLCancel |
| HY009 | Geçersiz null işaretçi kullanımı | (DM) TargetValuePtr |
| HY010 | İşlev dizisi hatası | (DM) Belirtilen StatementHandle yürütüldü durumunda değildi. İşlev, sqlexecute veya katalog işlevi (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ı. SQLGetData 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 (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, 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ı. (DM) StatementHandle yürütüldü, ancak StatementHandleile hiçbir sonuç kümesi ilişkilendirilmemiş. SQLExecute, sqlexecdirect |
| 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) BufferLength BufferLength |
| HY109 | Geçersiz imleç konumu | İmleç silinmiş veya getirilemeyen bir satırda (SQLSetPos İmleç yalnızca ileriye dönük bir imleçti ve satır kümesi boyutu birden büyük. |
| 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. |
| HYC00 | İsteğe bağlı özellik uygulanmadı | Sürücü veya veri kaynağı, SQLFetchScroll'da birden çok satıra sahip SQLGetData kullanımını desteklemez. Bu açıklama, sqlgetinfo Sürücü veya veri kaynağı, TargetType bağımsız değişkeninin ve ilgili sütunun SQL veri türünün birleşimiyle belirtilen dönüştürmeyi desteklemez. Bu hata yalnızca sütunun SQL veri türü sürücüye özgü bir SQL veri türüne eşlendiğinde geçerlidir. Sürücü yalnızca ODBC 2*.x* sürümünü destekler ve TargetType SQL_C_NUMERIC SQL_C_SBIGINT SQL_C_UBIGINT ve ek D: Veri Türleri'nde C Veri Türleri listelenen C veri türlerinden herhangi biri. Sürücü yalnızca 3.50 öncesi ODBC sürümlerini destekler ve TargetType |
| 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 karşılık gelen sürücü işlevi desteklemez. |
| 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 etkinse, SQLCompleteAsync işlem sonrası işlem yapmak ve işlemi tamamlamak için tanıtıcıda çağrılmalıdır. |
Yorum
SQLGetData belirtilen sütundaki verileri döndürür.
Akışlı çıkış parametreleriyle SQLGetData kullanma hakkında bilgi için bkz. SQLGetDataKullanarak Çıktı Parametrelerini Alma.
SQLGetData kullanma
Sürücü SQLGetData
Sürücüler bu kısıtlamaların herhangi birini gevşetebilir. Bir uygulama, bir sürücünün hangi kısıtlamaları gevşeteceğini belirlemek için aşağıdaki SQL_GETDATA_EXTENSIONS seçeneklerden herhangi biriyle SQLGetInfo
SQL_GD_OUTPUT_PARAMS = SQLGetData çıkış parametresi değerlerini döndürmek için çağrılabilir. Daha fazla bilgi için bkz. SQLGetDataKullanarak Çıktı Parametrelerini Alma
. SQL_GD_ANY_COLUMN. Bu seçenek döndürülürse SQLGetData, son ilişkili sütundan öncekiler de dahil olmak üzere ilişkisiz herhangi bir sütun için çağrılabilir.
SQL_GD_ANY_ORDER. Bu seçenek döndürülürse, sqlgetdata
herhangi bir sırada ilişkisiz sütunlar için çağrılabilir. SQL_GD_BLOCK. Bu seçenek SQL_GETDATA_EXTENSIONS InfoType için SQLGetInfo
döndürülürse, sürücü satır kümesi boyutu 1'den büyük olduğunda sqlgetdata çağrılarını destekler ve uygulama SQLGetData'yı çağırmadan önce imleci doğru satıra konumlandırmak için SQL_POSITION seçeneğiyle SQLSetPos çağırabilir.SQL_GD_BOUND. Bu seçenek döndürülürse, sqlgetdata
ilişkili sütunlar ve ilişkisiz sütunlar için çağrılabilir.
Bu kısıtlamaların iki istisnası vardır ve bir sürücünün bunları gevşetme yeteneği vardır. İlk olarak, satır kümesi boyutu 1'den büyük olduğunda SQLGetData
SQLGetData, SQLBulkOperations SQL_ADD seçeneğiyle çağrılarak eklenen satırın yer işaretini almak için kullanılamaz, çünkü imleç satıra konumlandırılmaz. Bir uygulama, sqlbulkoperations SQL_ADD
TargetType bağımsız değişkeni bir aralık veri türüyse, veriler için sırasıyla ARD'nin SQL_DESC_DATETIME_INTERVAL_PRECISION ve SQL_DESC_PRECISION alanlarında ayarlandığı gibi varsayılan aralık baştaki duyarlık (2) ve varsayılan aralık saniye duyarlığı (6) kullanılır.
TargetType bağımsız değişkeni SQL_C_NUMERIC bir veri türüyse, veriler için ARD'nin SQL_DESC_PRECISION ve SQL_DESC_SCALE alanlarında ayarlandığı gibi varsayılan duyarlık (sürücü tanımlı) ve varsayılan ölçek (0) kullanılır. Herhangi bir varsayılan duyarlık veya ölçek uygun değilse, uygulamanın SQLSetDescField veya
Not
ODBC 2*.x*'te uygulamalar TargetType
Parçalar halinde Variable-Length Verileri Alma
SQLGetData, sütundaki SQL veri türünün tanımlayıcısı SQL_CHAR, SQL_VARCHAR, SQL_LONGVARCHAR, SQL_WCHAR, SQL_WVARCHAR, SQL_WLONGVARCHAR, SQL_BINARY, SQL_VARBINARY, SQL_LONGVARBINARY veya değişken uzunluklu bir tür için sürücüye özgü tanımlayıcı olduğunda, parçalar halinde değişken uzunlukta veriler içeren bir sütundan veri almak için kullanılabilir.
Parçalar halindeki bir sütundan veri almak için uygulama sqlgetdata
SqlGetData
SQLGetData parçalar halinde sabit uzunlukta veriler döndürmek için kullanılamaz. SQLGetData sabit uzunlukta veri içeren bir sütun için bir satırda birden fazla kez çağrılırsa, ilkinden sonraki tüm çağrılar için SQL_NO_DATA döndürür.
Akışa Alınan Çıkış Parametreleri Alınıyor
Bir sürücü akışlı çıkış parametrelerini destekliyorsa, uygulama büyük bir parametre değeri almak için küçük bir arabelleğe sahip SQLGetData birçok kez çağırabilir. Akışlı çıkış parametresi hakkında daha fazla bilgi için bkz. SQLGetDataKullanarak Çıktı Parametrelerini Alma
SQLGetData ile Veri Alma
Belirtilen sütunun verilerini döndürmek için SQLGetData
Sütunun tüm verilerini döndürmüşse SQL_NO_DATA döndürür.
Veriler NULL olduğunda *StrLen_or_IndPtr SQL_NULL_DATA olarak ayarlar. Veriler NULL ise ve
StrLen_or_IndPtr null işaretçiyse, SQLGetDataSQLSTATE 22002 döndürür (Gösterge değişkeni gerekli ancak sağlanmaz). Sütunun verileri NULL değilse SQLGetData
3. adıma geçer. SQL_ATTR_MAX_LENGTH deyimi özniteliği sıfır olmayan bir değere ayarlanırsa, sütun karakter veya ikili veri içeriyorsa ve SQLGetData daha önce sütun için çağrılmadıysa, veriler SQL_ATTR_MAX_LENGTH bayt olarak kesilir.
Not
SQL_ATTR_MAX_LENGTH deyimi özniteliği, ağ trafiğini azaltmaya yöneliktir. Genellikle verileri ağ üzerinden döndürmeden önce kesen veri kaynağı tarafından uygulanır. Sürücüleri ve veri kaynaklarını desteklemek için gerekli değildir. Bu nedenle, verilerin belirli bir boyuta kesilmesini garanti etmek için uygulamanın bu boyutta bir arabellek ayırması ve BufferLength bağımsız değişkeninde boyutu belirtmesi gerekir.
Verileri TargetTypeiçinde belirtilen türe dönüştürür. Verilere bu veri türü için varsayılan duyarlık ve ölçek verilir. TargetType SQL_ARD_TYPE ise, ARD'nin SQL_DESC_CONCISE_TYPE alanındaki veri türü kullanılır. TargetType SQL_ARD_TYPE, SQL_DESC_CONCISE_TYPE alanındaki veri türüne bağlı olarak verilere ARD'nin SQL_DESC_DATETIME_INTERVAL_PRECISION, SQL_DESC_PRECISION ve SQL_DESC_SCALE alanlarında duyarlık ve ölçek verilir. Herhangi bir varsayılan duyarlık veya ölçek uygun değilse, uygulamanın SQLSetDescField veya
SQLSetDescRec çağrısıyla uygun tanımlayıcı alanını açıkça ayarlaması gerekir. Veriler karakter veya ikili gibi değişken uzunlukta bir veri türüne dönüştürüldüyse, SQLGetData
verilerin uzunluğunun bufferlength aşıp aşmadığını denetler. Karakter verilerinin uzunluğu (null sonlandırma karakteri dahil) BufferLength aşıyorsa, SQLGetData verileri BufferLength'e null sonlandırma karakteri uzunluğundan daha az kesecek. Ardından verileri null-terminates. İkili verilerin uzunluğu veri arabelleğinin uzunluğunu aşarsa, SQLGetData bufferlength bayt kesilir. Sağlanan veri arabelleği null sonlandırma karakterini tutamayacak kadar küçükse SQLGetData
SQL_SUCCESS_WITH_INFO ve SQLSTATE 01004 döndürür. SQLGetData sabit uzunlukta veri türlerine dönüştürülen verileri hiçbir zaman kesmez; her zaman *TargetValuePtr uzunluğunun veri türünün boyutu olduğunu varsayar.
Dönüştürülen (ve büyük olasılıkla kesilmiş) verileri *TargetValuePtryerleştirir. SQLGetData
verileri satır dışında döndüremediğini unutmayın. Verilerin uzunluğunu *StrLen_or_IndPtryerleştirir.
StrLen_or_IndPtr null bir işaretçiyse, SQLGetDatauzunluğu döndürmez. Karakter veya ikili veriler için bu, dönüştürmeden sonra ve BufferLengthnedeniyle kesilmeden önce verilerin uzunluğudur. Sürücü, bazen uzun verilerde olduğu gibi dönüştürmeden sonra verilerin uzunluğunu belirleyemezse, SQL_SUCCESS_WITH_INFO döndürür ve uzunluğu SQL_NO_TOTAL olarak ayarlar. (SQLGetData
son çağrı her zaman sıfır veya SQL_NO_TOTAL değil verilerin uzunluğunu döndürmelidir.) veriler SQL_ATTR_MAX_LENGTH deyimi özniteliği nedeniyle kesildiyse, bu özniteliğin değeri (gerçek uzunluğun aksine) * StrLen_or_IndPtr içine yerleştirilir. Bunun nedeni, bu özniteliğin dönüştürmeden önce sunucudaki verileri kesecek şekilde tasarlanmış olmasıdır, bu nedenle sürücünün gerçek uzunluğun ne olduğunu anlamasına imkan yoktur. SQLGetData aynı sütun için ardı ardına birden çok kez çağrıldığında, geçerli çağrının başlangıcında sağlanan verilerin uzunluğu budur; yani, sonraki her çağrıda uzunluk azalır.Diğer tüm veri türleri için bu, dönüştürmeden sonra verilerin uzunluğudur; yani, verilerin dönüştürüldüğü türün boyutudur.
Veriler dönüştürme sırasında anlam kaybı olmadan kesilirse (örneğin, 1.234 gerçek sayısı, 1 tamsayısına dönüştürülürken kesilir veya BufferLength çok küçük olduğundan (örneğin, "abcdef" dizesi 4 baytlık arabelleğe yerleştirilir), SQLGetData SQLSTATE 01004 (Veriler kesilmiş) ve SQL_SUCCESS_WITH_INFO döndürür. veriler SQL_ATTR_MAX_LENGTH deyimi özniteliğinden dolayı önem kaybı olmadan kesilirse, SQLGetData
SQL_SUCCESS döndürür ve SQLSTATE 01004 (Veriler kesilmiş) döndürmez.
SQLGetData
sqlgetdata
SQLGetData(icol=n), SQLGetData(icol=m), SQLGetData(icol=n)
SQLGetData(icol=n) öğesine yapılan ikinci çağrı, n sütununun başından veri alır. Sütun için SQLGetData önceki çağrıları nedeniyle verilerdeki herhangi bir uzaklık artık geçerli değildir.
Tanımlayıcılar ve SQLGetData
SQLGetData hiçbir tanımlayıcı alanıyla doğrudan etkileşim kurmaz.
TargetType SQL_ARD_TYPE ise, ARD'nin SQL_DESC_CONCISE_TYPE alanındaki veri türü kullanılır. TargetType SQL_ARD_TYPE veya SQL_C_DEFAULT ise, SQL_DESC_CONCISE_TYPE alanındaki veri türüne bağlı olarak verilere ARD'nin SQL_DESC_DATETIME_INTERVAL_PRECISION, SQL_DESC_PRECISION ve SQL_DESC_SCALE alanlarında duyarlık ve ölçek verilir.
Kod Örneği
Aşağıdaki örnekte, bir uygulama ad, kimlik ve telefon numarasına göre sıralanmış müşteri kimlikleri, adlar ve telefon numaralarının bir sonuç kümesini döndürmek için bir SELECT deyimi yürütür. Her veri satırı için, imleci sonraki satıra konumlandırmak için SQLFetch çağırır. Getirilen verileri almak için SQLGetData çağırır; SQLGetDataçağrısında verilerin arabellekleri ve döndürülen bayt sayısı belirtilir. Son olarak, her çalışanın adını, kimliğini ve telefon numarasını yazdırır.
#define NAME_LEN 50
#define PHONE_LEN 50
SQLCHAR szName[NAME_LEN], szPhone[PHONE_LEN];
SQLINTEGER sCustID, cbName, cbAge, cbBirthday;
SQLRETURN retcode;
SQLHSTMT hstmt;
retcode = SQLExecDirect(hstmt,
"SELECT CUSTID, NAME, PHONE FROM CUSTOMERS ORDER BY 2, 1, 3",
SQL_NTS);
if (retcode == SQL_SUCCESS) {
while (TRUE) {
retcode = SQLFetch(hstmt);
if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO) {
show_error();
}
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
/* Get data for columns 1, 2, and 3 */
SQLGetData(hstmt, 1, SQL_C_ULONG, &sCustID, 0, &cbCustID);
SQLGetData(hstmt, 2, SQL_C_CHAR, szName, NAME_LEN, &cbName);
SQLGetData(hstmt, 3, SQL_C_CHAR, szPhone, PHONE_LEN,
&cbPhone);
/* Print the row of data */
fprintf(out, "%-5d %-*s %*s", sCustID, NAME_LEN-1, szName,
PHONE_LEN-1, szPhone);
} else {
break;
}
}
}
İlgili İşlevler
| Hakkında bilgi için | Görmek |
|---|---|
| Sonuç kümesindeki bir sütun için depolama alanı atama | SQLBindCol |
| Blok imleci konumuyla ilgili olmayan toplu işlemler gerçekleştirme | SQLBulkOperations |
| Deyim işlemeyi iptal etme | SQLCancel |
| SQL deyimi yürütme | SQLExecDirect |
| Hazırlanmış bir SQL deyimini yürütme | SQLExecute |
| Veri bloğunu getirme veya sonuç kümesinde kaydırma | SQLFetchScroll |
| Tek bir veri satırı veya yalnızca ileri yönde veri bloğu getirme | SQLFetch |
| Yürütme zamanında parametre verileri gönderme | SQLPutData |
| İmleci konumlandırma, satır kümesindeki verileri yenileme veya satır kümesindeki verileri güncelleştirme veya silme | SQLSetPos |
Ayrıca Bkz.
ODBC API Başvurusu
ODBC Üst Bilgi Dosyaları
SQLGetData