Fungsi SQLPrimaryKeys
Kesesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 1.0: ODBC
Ringkasan
SQLPrimaryKeys mengembalikan nama kolom yang membentuk kunci utama untuk tabel. Driver mengembalikan informasi sebagai kumpulan hasil. Fungsi ini tidak mendukung pengembalian kunci primer dari beberapa tabel dalam satu panggilan.
Sintaks
SQLRETURN SQLPrimaryKeys(
SQLHSTMT StatementHandle,
SQLCHAR * CatalogName,
SQLSMALLINT NameLength1,
SQLCHAR * SchemaName,
SQLSMALLINT NameLength2,
SQLCHAR * TableName,
SQLSMALLINT NameLength3);
Argumen
StatementHandle
[Input] Handel pernyataan.
CatalogName
[Input] Nama katalog. Jika driver mendukung katalog untuk beberapa tabel tetapi tidak untuk yang lain, seperti ketika driver mengambil data dari DBMS yang berbeda, string kosong ("") menunjukkan tabel yang tidak memiliki katalog. CatalogName tidak boleh berisi pola pencarian string.
Jika atribut pernyataan SQL_ATTR_METADATA_ID diatur ke SQL_TRUE, CatalogName diperlakukan sebagai pengidentifikasi dan kasusnya tidak signifikan. Jika SQL_FALSE, CatalogName adalah argumen biasa; itu diperlakukan secara harfiah, dan kasusnya signifikan. Untuk informasi selengkapnya, lihat Argumen di Fungsi Katalog.
NameLength1
[Input] Panjang karakter *CatalogName.
SchemaName
[Input] Nama skema. Jika driver mendukung skema untuk beberapa tabel tetapi tidak untuk yang lain, seperti ketika driver mengambil data dari DBMS yang berbeda, string kosong ("") menunjukkan tabel yang tidak memiliki skema. SchemaName tidak boleh berisi pola pencarian string.
Jika atribut pernyataan SQL_ATTR_METADATA_ID diatur ke SQL_TRUE, SchemaName diperlakukan sebagai pengidentifikasi dan kasusnya tidak signifikan. Jika SQL_FALSE, SchemaName adalah argumen biasa; itu diperlakukan secara harfiah, dan kasusnya tidak signifikan.
NameLength2
[Input] Panjang karakter *SchemaName.
TableName
[Input] Nama tabel. Argumen ini tidak boleh berupa penunjuk null. TableName tidak boleh berisi pola pencarian string.
Jika atribut pernyataan SQL_ATTR_METADATA_ID diatur ke SQL_TRUE, TableName diperlakukan sebagai pengidentifikasi dan kasusnya tidak signifikan. Jika SQL_FALSE, TableName adalah argumen biasa; itu diperlakukan secara harfiah, dan kasusnya tidak signifikan.
NameLength3
[Input] Panjang karakter *TableName.
Kembali
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR, atau SQL_INVALID_HANDLE.
Diagnostik
Saat SQLPrimaryKeys mengembalikan SQL_ERROR atau SQL_SUCCESS_WITH_INFO, nilai SQLSTATE terkait dapat diperoleh dengan memanggil SQLGetDiagRec dengan HandleType SQL_HANDLE_STMT dan Handle of StatementHandle. Tabel berikut mencantumkan nilai SQLSTATE yang umumnya dikembalikan oleh SQLPrimaryKeys dan menjelaskan masing-masing dalam konteks fungsi ini; notasi "(DM)" mendahului deskripsi SQLSTATEs yang dikembalikan oleh Driver Manager. Kode pengembalian yang terkait dengan setiap nilai SQLSTATE SQL_ERROR, kecuali disebutkan sebaliknya.
SQLSTATE | Kesalahan | Deskripsi |
---|---|---|
01000 | Peringatan umum | Pesan informasi khusus driver. (Fungsi mengembalikan SQL_SUCCESS_WITH_INFO.) |
08S01 | Kegagalan tautan komunikasi | Tautan komunikasi antara driver dan sumber data tempat driver tersambung gagal sebelum fungsi selesai diproses. |
24000 | Status kursor tidak valid | (DM) Kursor terbuka pada StatementHandle, dan SQLFetch atau SQLFetchScroll telah dipanggil. Kursor terbuka pada StatementHandle, tetapi SQLFetch atau SQLFetchScroll belum dipanggil. |
40001 | Kegagalan serialisasi | Transaksi digulung balik karena kebuntuan sumber daya dengan transaksi lain. |
40003 | Penyelesaian pernyataan tidak diketahui | Koneksi terkait gagal selama eksekusi fungsi ini, dan status transaksi tidak dapat ditentukan. |
HY000 | Kesalahan umum | Terjadi kesalahan yang tidak ada SQLSTATE tertentu dan tidak ada SQLSTATE khusus implementasi yang ditentukan. Pesan kesalahan yang dikembalikan oleh SQLGetDiagRec di buffer *MessageText menjelaskan kesalahan dan penyebabnya. |
HY001 | Kesalahan alokasi memori | Driver tidak dapat mengalokasikan memori yang diperlukan untuk mendukung eksekusi atau penyelesaian fungsi. |
HY008 | Operasi dibatalkan | Pemrosesan asinkron diaktifkan untuk StatementHandle. Fungsi ini dipanggil, dan sebelum selesai dieksekusi, SQLCancel atau SQLCancelHandle dipanggil pada StatementHandle. Kemudian fungsi dipanggil lagi pada StatementHandle. Fungsi ini dipanggil, dan sebelum selesai dieksekusi, SQLCancel atau SQLCancelHandle dipanggil pada StatementHandle dari utas yang berbeda dalam aplikasi multithread. |
HY009 | Penggunaan pointer null tidak valid | (DM) Argumen TableName adalah penunjuk null. Atribut pernyataan SQL_ATTR_METADATA_ID diatur ke SQL_TRUE, argumen CatalogName adalah penunjuk null, dan SQLGetInfo dengan jenis informasi SQL_CATALOG_NAME mengembalikan bahwa nama katalog didukung. (DM) Atribut pernyataan SQL_ATTR_METADATA_ID diatur ke SQL_TRUE, dan argumen SchemaName adalah pointer null. |
HY010 | Kesalahan urutan fungsi | (DM) Fungsi eksekusi asinkron dipanggil untuk handel koneksi yang terkait dengan StatementHandle. Fungsi asinkron ini masih dijalankan ketika fungsi SQLPrimaryKeys dipanggil. (DM) SQLExecute, SQLExecDirect, atau SQLMoreResults dipanggil untuk StatementHandle dan dikembalikan SQL_PARAM_DATA_AVAILABLE. Fungsi ini dipanggil sebelum data diambil untuk semua parameter yang dialirkan. (DM) Fungsi eksekusi asinkron (bukan yang ini) dipanggil untuk StatementHandle dan masih dijalankan ketika fungsi ini dipanggil. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations, atau SQLSetPos dipanggil untuk StatementHandle dan dikembalikan SQL_NEED_DATA. Fungsi ini dipanggil sebelum data dikirim untuk semua parameter atau kolom data-at-execution. |
HY013 | Kesalahan manajemen memori | Panggilan fungsi tidak dapat diproses karena objek memori yang mendasar tidak dapat diakses, mungkin karena kondisi memori yang rendah. |
HY090 | String atau panjang buffer tidak valid | (DM) Nilai salah satu argumen panjang nama kurang dari 0 tetapi tidak sama dengan SQL_NTS, dan argumen nama terkait bukan penunjuk null. Nilai salah satu argumen panjang nama melebihi nilai panjang maksimum untuk nama yang sesuai. |
HY117 | Koneksi ditangguhkan karena status transaksi yang tidak diketahui. Hanya fungsi putuskan sambungan dan baca-saja yang diizinkan. | (DM) Untuk informasi selengkapnya tentang status ditangguhkan, lihat Fungsi SQLEndTran. |
HYC00 | Fitur opsional tidak diimplementasikan | Katalog ditentukan, dan driver atau sumber data tidak mendukung katalog. Skema ditentukan dan driver atau sumber data tidak mendukung skema. Kombinasi pengaturan saat ini dari atribut pernyataan SQL_ATTR_CONCURRENCY dan SQL_ATTR_CURSOR_TYPE tidak didukung oleh driver atau sumber data. Atribut pernyataan SQL_ATTR_USE_BOOKMARKS diatur ke SQL_UB_VARIABLE, dan atribut pernyataan SQL_ATTR_CURSOR_TYPE diatur ke jenis kursor yang drivernya tidak mendukung marka buku. |
HYT00 | Waktu habis kedaluwarsa | Periode batas waktu kedaluwarsa sebelum sumber data mengembalikan tataan hasil yang diminta. Periode batas waktu diatur melalui SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
HYT01 | Kesalahan waktu habis koneksi kedaluwarsa | Periode batas waktu koneksi kedaluwarsa sebelum sumber data merespons permintaan. Periode batas waktu koneksi diatur melalui SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Driver tidak mendukung fungsi ini | (DM) Driver yang terkait dengan StatementHandle tidak mendukung fungsi. |
IM017 | Polling dinonaktifkan dalam mode pemberitahuan asinkron | Setiap kali model pemberitahuan digunakan, polling dinonaktifkan. |
IM018 | SQLCompleteAsync belum dipanggil untuk menyelesaikan operasi asinkron sebelumnya pada handel ini. | Jika panggilan fungsi sebelumnya pada handel mengembalikan SQL_STILL_EXECUTING dan jika mode pemberitahuan diaktifkan, SQLCompleteAsync harus dipanggil pada handel untuk melakukan pasca-pemrosesan dan menyelesaikan operasi. |
Komentar
SQLPrimaryKeys mengembalikan hasil sebagai hasil standar yang ditetapkan, diurutkan berdasarkan TABLE_CAT, TABLE_SCHEM, TABLE_NAME, dan KEY_SEQ. Untuk informasi tentang bagaimana informasi ini dapat digunakan, lihat Penggunaan Data Katalog.
Kolom berikut telah diganti namanya menjadi ODBC 3.x. Perubahan nama kolom tidak memengaruhi kompatibilitas mundur karena aplikasi mengikat dengan nomor kolom.
Kolom ODBC 2.0 | ODBC 3.kolom x |
---|---|
TABLE_QUALIFIER | TABLE_CAT |
TABLE_OWNER | TABLE_SCHEM |
Untuk menentukan panjang aktual kolom TABLE_CAT, TABLE_SCHEM, TABLE_NAME, dan COLUMN_NAME, panggil SQLGetInfo dengan opsi SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN, dan SQL_MAX_COLUMN_NAME_LEN.
Catatan
Untuk informasi selengkapnya tentang penggunaan umum, argumen, dan data fungsi katalog ODBC yang dikembalikan, lihat Fungsi Katalog.
Tabel berikut mencantumkan kolom dalam tataan hasil. Kolom tambahan di luar kolom 6 (PK_NAME) dapat ditentukan oleh driver. Aplikasi harus mendapatkan akses ke kolom khusus driver dengan menghitung mundur dari akhir tataan hasil daripada menentukan posisi ordinal eksplisit. Untuk informasi selengkapnya, lihat Data yang Dikembalikan oleh Fungsi Katalog.
Nama kolom | Nomor kolom | Jenis Data | Komentar |
---|---|---|---|
TABLE_CAT (ODBC 1.0) | 1 | Varchar | Nama katalog tabel kunci primer; NULL jika tidak berlaku untuk sumber data. Jika driver mendukung katalog untuk beberapa tabel tetapi tidak untuk yang lain, seperti ketika driver mengambil data dari DBMS yang berbeda, itu mengembalikan string kosong ("") untuk tabel yang tidak memiliki katalog. |
TABLE_SCHEM (ODBC 1.0) | 2 | Varchar | Nama skema tabel kunci primer; NULL jika tidak berlaku untuk sumber data. Jika driver mendukung skema untuk beberapa tabel tetapi tidak untuk yang lain, seperti ketika driver mengambil data dari DBMS yang berbeda, itu mengembalikan string kosong ("") untuk tabel yang tidak memiliki skema. |
TABLE_NAME (ODBC 1.0) | 3 | Varchar bukan NULL | Nama tabel kunci primer. |
COLUMN_NAME (ODBC 1.0) | 4 | Varchar bukan NULL | Nama kolom kunci primer. Driver mengembalikan string kosong untuk kolom yang tidak memiliki nama. |
KEY_SEQ (ODBC 1.0) | 5 | Smallint bukan NULL | Nomor urutan kolom dalam kunci (dimulai dengan 1). |
PK_NAME (ODBC 2.0) | 6 | Varchar | Nama kunci primer. NULL jika tidak berlaku untuk sumber data. |
Contoh Kode
Lihat SQLForeignKeys.
Fungsi Terkait
Untuk informasi tentang | Lihat |
---|---|
Mengikat buffer ke kolom dalam tataan hasil | Fungsi SQLBindCol |
Membatalkan pemrosesan pernyataan | Fungsi SQLCancel |
Mengambil blok data atau menggulir melalui kumpulan hasil | Fungsi SQLFetchScroll |
Mengambil satu baris atau blok data dalam arah terusan saja | Fungsi SQLFetch |
Mengembalikan kolom kunci asing | Fungsi SQLForeignKeys |
Mengembalikan statistik dan indeks tabel | Fungsi SQLStatistics |