Bagikan melalui


Fungsi SQLTablePrivileges

Kesesuaian
Versi Diperkenalkan: Kepatuhan Standar ODBC 1.0: ODBC

Ringkasan
SQLTablePrivileges mengembalikan daftar tabel dan hak istimewa yang terkait dengan setiap tabel. Driver mengembalikan informasi sebagai hasil yang ditetapkan pada pernyataan yang ditentukan.

Sintaks

  
SQLRETURN SQLTablePrivileges(  
     SQLHSTMT      StatementHandle,  
     SQLCHAR *     CatalogName,  
     SQLSMALLINT   NameLength1,  
     SQLCHAR *     SchemaName,  
     SQLSMALLINT   NameLength2,  
     SQLCHAR *     TableName,  
     SQLSMALLINT   NameLength3);  

Argumen

StatementHandle
[Input] Handel pernyataan.

CatalogName
[Input] Katalog tabel. 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] Pola pencarian string untuk 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.

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 nilai pola; itu diperlakukan secara harfiah, dan kasusnya signifikan.

NameLength2
[Input] Panjang karakter *SchemaName.

TableName
[Input] Pola pencarian string untuk nama tabel.

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 nilai pola; itu diperlakukan secara harfiah, dan kasusnya signifikan.

NameLength3
[Input] Panjang karakter *TableName.

Kembali

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR, atau SQL_INVALID_HANDLE.

Diagnostik

Ketika SQLTablePrivileges 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 SQLTablePrivileges 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 Kursor terbuka pada StatementHandle, dan SQLFetch atau SQLFetchScroll telah dipanggil. Kesalahan ini dikembalikan oleh Manajer Driver jika SQLFetch atau SQLFetchScroll belum mengembalikan SQL_NO_DATA dan dikembalikan oleh driver jika SQLFetch atau SQLFetchScroll telah mengembalikan SQL_NO_DATA.

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 SQLTablePrivileges dipanggil, dan sebelum selesai dieksekusi, SQLCancel atau SQLCancelHandle dipanggil pada StatementHandle. Kemudian fungsi SQLTablePrivileges dipanggil lagi pada StatementHandle.

Fungsi SQLTablePrivileges dipanggil, dan sebelum selesai dieksekusi, SQLCancel atau SQLCancelHandle dipanggil pada StatementHandle dari utas yang berbeda dalam aplikasi multithread.
HY009 Penggunaan pointer null tidak valid Atribut pernyataan SQL_ATTR_METADATA_ID diatur ke SQL_TRUE, argumen CatalogName adalah pointer null, dan infoType SQL_CATALOG_NAME mengembalikan bahwa nama katalog didukung.

(DM) Atribut pernyataan SQL_ATTR_METADATA_ID diatur ke SQL_TRUE, dan argumen SchemaName atau TableName 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 SQLTablePrivileges 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.

Nilai salah satu argumen panjang nama melebihi nilai panjang maksimum untuk kualifikasi atau 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.

Pola pencarian string ditentukan untuk skema tabel, nama tabel, atau nama kolom, dan sumber data tidak mendukung pola pencarian untuk satu atau beberapa argumen tersebut.

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 kueri kedaluwarsa sebelum sumber data mengembalikan tataan hasil. 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

Argumen SchemaName dan TableName menerima pola pencarian. Untuk informasi selengkapnya tentang pola pencarian yang valid, lihat Argumen Nilai Pola.

SQLTablePrivileges mengembalikan hasil sebagai hasil standar yang ditetapkan, diurutkan berdasarkan TABLE_CAT, TABLE_SCHEM, TABLE_NAME, PRIVILEGE, dan GRANTEE.

Untuk menentukan panjang aktual kolom TABLE_CAT, TABLE_SCHEM, dan TABLE_NAME, aplikasi dapat memanggil SQLGetInfo dengan opsi SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, dan SQL_MAX_TABLE_NAME_LEN.

Catatan

Untuk informasi selengkapnya tentang penggunaan umum, argumen, dan data fungsi katalog ODBC yang dikembalikan, lihat Fungsi 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 Kolom ODBC 3.x
TABLE_QUALIFIER TABLE_CAT
TABLE_OWNER TABLE_SCHEM

Tabel berikut mencantumkan kolom dalam tataan hasil. Kolom tambahan di luar kolom 7 (IS_GRANTABLE) 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; 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; 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.
GRANTOR (ODBC 1.0) 4 Varchar Nama pengguna yang memberikan hak istimewa; NULL jika tidak berlaku untuk sumber data.

Untuk semua baris di mana nilai dalam kolom GRANTEE adalah pemilik objek, kolom GRANTOR akan menjadi "_SYSTEM".
GRANTEE (ODBC 1.0) 5 Varchar bukan NULL Nama pengguna yang diberi hak istimewa.
HAK ISTIMEWA (ODBC 1.0) 6 Varchar bukan NULL Hak istimewa tabel. Mungkin salah satu hak istimewa khusus sumber data atau berikut ini.

SELECT: Penerima izin untuk mengambil data untuk satu atau beberapa kolom tabel.

INSERT: Penerima izin menyisipkan baris baru yang berisi data untuk satu atau beberapa kolom ke dalam tabel.

PEMBARUAN: Penerima izin untuk memperbarui data dalam satu atau beberapa kolom tabel.

DELETE: Penerima izin untuk menghapus baris data dari tabel.

REFERENSI: Penerima izin untuk merujuk ke satu atau beberapa kolom tabel dalam batasan (misalnya, batasan pemeriksaan unik, referensial, atau tabel).

Cakupan tindakan yang diizinkan oleh penerima hak istimewa tabel tertentu bergantung pada sumber data. Misalnya, hak istimewa UPDATE mungkin mengizinkan penerima izin untuk memperbarui semua kolom dalam tabel pada satu sumber data dan hanya kolom yang pemberinya memiliki hak istimewa UPDATE pada sumber data lain.
IS_GRANTABLE (ODBC 1.0) 7 Varchar Menunjukkan apakah penerima izin untuk memberikan hak istimewa kepada pengguna lain; "YES", "NO", atau NULL jika tidak diketahui atau tidak berlaku untuk sumber data.

Hak istimewa dapat diberikan atau tidak dapat diberikan tetapi tidak keduanya. Tataan hasil yang dikembalikan oleh SQLColumnPrivileges tidak akan pernah berisi dua baris yang semua kolomnya kecuali kolom IS_GRANTABLE berisi nilai yang sama.

Contoh Kode

Untuk contoh kode fungsi serupa, lihat SQLColumns.

Untuk informasi tentang Lihat
Mengikat buffer ke kolom dalam tataan hasil Fungsi SQLBindCol
Membatalkan pemrosesan pernyataan Fungsi SQLCancel
Mengembalikan hak istimewa untuk kolom atau kolom Fungsi SQLColumnPrivileges
Mengembalikan kolom dalam tabel atau tabel Fungsi SQLColumns
Mengambil satu baris atau blok data dalam arah terusan saja Fungsi SQLFetch
Mengambil blok data atau menggulir melalui kumpulan hasil Fungsi SQLFetchScroll
Mengembalikan statistik dan indeks tabel Fungsi SQLStatistics
Mengembalikan daftar tabel dalam sumber data Fungsi SQLTables

Lihat Juga

Referensi API ODBC
File Header ODBC