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
Tanıtılan Sürüm: ODBC 1.0 Standartlar Uyumu: ODBC
Summary
SQLPrimaryKeys , bir tablo için birincil anahtarı oluşturan sütun adlarını döndürür. Sürücü bilgileri sonuç kümesi olarak döndürür. Bu fonksiyon, tek bir çağrıda birden fazla tablodan birincil anahtarların geri dönmesini desteklemez.
Syntax
SQLRETURN SQLPrimaryKeys(
SQLHSTMT StatementHandle,
SQLCHAR * CatalogName,
SQLSMALLINT NameLength1,
SQLCHAR * SchemaName,
SQLSMALLINT NameLength2,
SQLCHAR * TableName,
SQLSMALLINT NameLength3);
Arguments
StatementHandle
[Giriş] Deyim tanıtıcısı.
Catalogname
[Giriş] Katalog adı. Bir sürücü bazı tablolar için katalogları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri alırken, boş bir dizi ("") katalogları olmayan tabloları gösterir.
CatalogName bir dizi arama deseni içeremez.
Eğer SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, CatalogName tanımlayıcı olarak ele alınır ve durumu anlamlı değildir. Eğer SQL_FALSE ise, CatalogName sıradan bir argümandır; kelime kelimesi kelimesine ele alınır ve durumu önemlidir. Daha fazla bilgi için bkz. Katalog İşlevleri'ndeki Bağımsız Değişkenler.
NameLength1
[Giriş] *CatalogName'nin karakterlerindeki uzunluk.
Şema Adı
[Giriş] Şema adı. Bir sürücü bazı tablolar için şemaları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri alırken, boş bir dizi ("") şema olmayan tabloları gösterir.
SchemaName bir dizi arama deseni içeremez.
SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, SchemaName tanımlayıcı olarak kabul edilir ve durumu anlamlı değildir. Eğer SQL_FALSE ise, SchemaName sıradan bir argümandır; kelimesi kelimesine ele alınır ve durumu önemli değildir.
NameLength2
[Giriş] *SchemaName'nin karakterlerindeki uzunluk.
Tablo Adı
[Giriş] Tablo adı. Bu argüman bir null işaretçi olamaz.
TableName bir dizi arama deseni içeremez.
Eğer SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmışsa, TableName tanımlayıcı olarak ele alınır ve durumu anlamlı değildir. Eğer SQL_FALSE ise, TableName sıradan bir argümandır; kelimesi kelimesine ele alınır ve durumu önemli değildir.
NameLength3
[Giriş] *TableName'in karakterlerindeki uzunluk.
İadeler
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ya da SQL_INVALID_HANDLE.
Diagnostics
SQLPrimaryKeys SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde, ilişkili bir SQLSTATE değeri SQLGetDiagRec çağrılıp, SQL_HANDLE_STMT HandleType ve HandleHandle ile elde edilebilir. Aşağıdaki tablo, SQLPrimaryKeys 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.) |
| 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. |
| 24000 | Geçersiz imleç durumu | (DM) StatementHandle üzerinde bir imleç açıktı ve SQLFetch veya SQLFetchScroll çağrıldı. StatementHandle'da bir imleç açıktı, ancak SQLFetch veya SQLFetchScroll çağrılmamıştı. |
| 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. |
| 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) TableName argümanı bir null pointer'dı. SQL_ATTR_METADATA_ID ifadesi özniteliği SQL_TRUE olarak ayarlanmıştı, CatalogName argümanı null işaretçiydi ve SQLGetInfo SQL_CATALOG_NAME bilgi tipiyle katalog adlarının desteklendiğini döndürdü. (DM) SQL_ATTR_METADATA_ID ifade niteliği SQL_TRUE olarak ayarlanmıştı ve SchemaName argümanı bir null pointer'dı. |
| 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, SQLPrimaryKeys fonksiyonu çağrıldığında hâlâ çalışı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) İsim uzunluğu argümanlarından birinin değeri 0'dan küçüktü ancak SQL_NTS'ye eşit değildi ve ilişkili isim argümanı null işaretçi değildir. Ad uzunluğu bağımsız değişkenlerinden birinin değeri, karşılık gelen ad için uzunluk üst sınırını aştı. |
| 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ı | Bir katalog belirtilmiş ve sürücü veya veri kaynağı katalogları desteklememektedir. Bir şema belirtilmiş ve sürücü ya da veri kaynağı şemaları desteklemiyor. 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 | Zaman aşımına sahip olan süre, veri kaynağı istenen sonuç setini döndürmeden önce sona erdi. 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
SQLPrimaryKeys sonuçları standart bir sonuç seti olarak, TABLE_CAT, TABLE_SCHEM, TABLE_NAME ve KEY_SEQ sıralarına göre döndürür. Bu bilgilerin nasıl kullanılabileceğini öğrenmek için bkz. Katalog Verilerinin Kullanımları.
Aşağıdaki sütunlar ODBC 3 için yeniden adlandırılmıştır. x. Sütun adı değişiklikleri, uygulamalar sütun numarasına göre bağlandığı için geriye doğru uyumluluğu etkilemez.
| ODBC 2.0 sütunu | ODBC 3. x sütunu |
|---|---|
| TABLE_QUALIFIER | TABLE_CAT |
| TABLO_SAHİBİ | TABLO_ŞEMASI |
TABLE_CAT, TABLE_SCHEM, TABLE_NAME ve COLUMN_NAME sütunlarının gerçek uzunluklarını belirlemek için SQLGetInfo'yu SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN ve SQL_MAX_COLUMN_NAME_LEN seçenekleriyle çağırın.
Note
ODBC katalog işlevlerinin genel kullanımı, bağımsız değişkenleri ve döndürülen verileri hakkında daha fazla bilgi için bkz . Katalog İşlevleri.
Aşağıdaki tabloda sonuç kümesindeki sütunlar listelenir. 6. sütun (PK_NAME) ötesinde ek sütunlar sürücü tarafından tanımlanabilir. Bir uygulama, açık bir sıralı konum belirtmek yerine sonuç kümesinin sonundan geri sayarak sürücüye özgü sütunlara erişim sağlamalıdır. Daha fazla bilgi için bkz. Katalog İşlevleri Tarafından Döndürülen Veriler.
| Sütun adı | Sütun numarası | Veri türü | Comments |
|---|---|---|---|
| TABLE_CAT (ODBC 1.0) | 1 | Varchar | Birincil anahtar tablo katalog adı; Veri kaynağına uygulanmıyorsa NULL. Bir sürücü bazı tablolar için katalogları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri aldığında, katalogları olmayan tablolar için boş bir dizi ("") döner. |
| TABLE_SCHEM (ODBC 1.0) | 2 | Varchar | Birincil anahtar tablo şema adı; Veri kaynağına uygulanmıyorsa NULL. Bir sürücü bazı tablolar için şemaları desteklerken diğerleri için desteklemiyorsa, örneğin sürücü farklı DBMS'lerden veri alırsa, şema olmayan tablolar için boş bir diziyi ("") döndürür. |
| TABLE_NAME (ODBC 1.0) | 3 | Varchar NULL değil | Birincil anahtar tablo adı. |
| COLUMN_NAME (ODBC 1.0) | 4 | Varchar NULL değil | Birincil anahtar sütun adı. Sürücü, adı olmayan bir sütun için boş bir diziyi döndürür. |
| KEY_SEQ (ODBC 1.0) | 5 | Smallint NULL değil | Sütun dizisi numarası anahtarda (1 ile başlar). |
| PK_NAME (ODBC 2.0) | 6 | Varchar | Birincil anahtar adı. Veri kaynağına uygulanmıyorsa NULL. |
Kod Örneği
SQLForeignKeys'e bakınız.
İ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 |
| Veri bloğunu getirme veya sonuç kümesinde kaydırma | SQLFetchScroll İşlevi |
| Tek bir satır veya veri bloğunu sadece ileri yönde almak | SQLFetch İşlevi |
| Yabancı anahtar sütunlarını döndürme | SQLForeignKeys İşlevi |
| Tablo istatistikleri ve indeksleri geri getirilmesi | SQLStatistics Fonksiyonu |