SQLSetStmtAttr

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Driver ODBC Klien Asli SQL Server tidak mendukung model kursor campuran (keyset/dinamis). Upaya untuk mengatur ukuran set kunci menggunakan SQL_ATTR_KEYSET_SIZE akan gagal jika set nilai tidak sama dengan 0.

Aplikasi menetapkan SQL_ATTR_ROW_ARRAY_SIZE pada semua pernyataan untuk mendeklarasikan jumlah baris yang dikembalikan pada panggilan fungsi SQLFetch atau SQLFetchScroll . Pada pernyataan yang menunjukkan kursor server, driver menggunakan SQL_ATTR_ROW_ARRAY_SIZE untuk menentukan ukuran blok baris yang dihasilkan server untuk memenuhi permintaan pengambilan dari kursor. Dalam ukuran blok kursor dinamis, keanggotaan baris dan pemesanan diperbaiki jika tingkat isolasi transaksi cukup untuk memastikan pembacaan transaksi yang dilakukan berulang. Kursor sepenuhnya dinamis di luar blok yang ditunjukkan oleh nilai ini. Ukuran blok kursor server sepenuhnya dinamis dan dapat diubah kapan saja dalam mengambil pemrosesan.

Parameter SQLSetStmtAttr dan Table-Valued

SQLSetStmtAttr dapat digunakan untuk mengatur SQL_SOPT_SS_PARAM_FOCUS dalam deskriptor parameter aplikasi (APD) sebelum mengakses bidang deskriptor untuk kolom parameter bernilai tabel.

Jika upaya dilakukan untuk mengatur SQL_SOPT_SS_PARAM_FOCUS ke ordinal parameter yang bukan parameter bernilai tabel, SQLSetStmtAttr mengembalikan SQL_ERROR dan rekaman diagnostik dibuat dengan SQLSTATE = HY024 dan pesan "Nilai atribut tidak valid". SQL_SOPT_SS_PARAM_FOCUS tidak diubah saat SQL_ERROR dikembalikan.

Mengatur SQL_SOPT_SS_PARAM_FOCUS ke 0 memulihkan akses ke rekaman deskriptor untuk parameter.

SQLSetStmtAttr juga dapat digunakan untuk mengatur SQL_SOPT_SS_NAME_SCOPE. Untuk informasi selengkapnya, lihat bagian SQL_SOPT_SS_NAME_SCOPE, nanti dalam topik ini.

Untuk informasi selengkapnya, lihat Metadata Parameter Bernilai Tabel untuk Pernyataan yang Disiapkan.

Untuk informasi selengkapnya tentang parameter bernilai tabel, lihat Parameter Bernilai Tabel (ODBC).

Dukungan SQLSetStmtAttr untuk Kolom Jarang

SQLSetStmtAttr dapat digunakan untuk mengatur SQL_SOPT_SS_NAME_SCOPE. Untuk informasi selengkapnya, lihat bagian SQL_SOPT_SS_NAME_SCOPE, nanti dalam topik ini. Untuk informasi selengkapnya tentang kolom jarang, lihat Dukungan Kolom Jarang (ODBC).

Atribut Pernyataan

Driver ODBC SQL Server Native Client juga mendukung atribut pernyataan khusus driver berikut.

SQL_SOPT_SS_CURSOR_OPTIONS

Atribut SQL_SOPT_SS_CURSOR menentukan apakah driver akan menggunakan opsi performa khusus driver pada kursor. SQLGetData tidak diizinkan saat opsi ini diatur. Pengaturan default adalah SQL_CO_OFF. Nilai ValuePtr berjenis SQLLEN.

Nilai ValuePtr Deskripsi
SQL_CO_OFF Default. Menonaktifkan kursor baca-saja dan autofetch baca-saja yang cepat, memungkinkan SQLGetData pada kursor baca-saja dan baca-saja. Ketika SQL_SOPT_SS_CURSOR_OPTIONS diatur ke SQL_CO_OFF, jenis kursor tidak akan berubah. Artinya, kursor hanya maju yang cepat akan tetap menjadi kursor hanya maju yang cepat. Untuk mengubah jenis kursor, aplikasi sekarang harus mengatur jenis kursor yang berbeda menggunakan SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE.
SQL_CO_FFO Mengaktifkan kursor baca-saja dan baca-saja yang cepat, menonaktifkan SQLGetData pada kursor baca-saja dan baca-saja.
SQL_CO_AF Mengaktifkan opsi autofetch pada jenis kursor apa pun. Ketika opsi ini diatur untuk handel pernyataan, SQLExecute atau SQLExecDirect akan menghasilkan SQLFetchScroll implisit (SQL_FIRST). Kursor dibuka dan batch baris pertama dikembalikan dalam satu perjalanan pulang pergi ke server.
SQL_CO_FFO_AF Mengaktifkan kursor hanya maju cepat dengan opsi autofetch. Ini sama seperti jika SQL_CO_AF dan SQL_CO_FFO ditentukan.

Ketika opsi ini diatur, server menutup kursor secara otomatis ketika mendeteksi bahwa baris terakhir telah diambil. Aplikasi masih harus memanggil SQLFreeStmt (SQL_CLOSE) atau SQLCloseCursor, tetapi driver tidak perlu mengirim pemberitahuan dekat ke server.

Jika daftar pilih berisi kolom teks, ntext, atau gambar , kursor hanya maju cepat dikonversi ke kursor dinamis dan SQLGetData diizinkan.

SQL_SOPT_SS_DEFER_PREPARE

Atribut SQL_SOPT_SS_DEFER_PREPARE menentukan apakah pernyataan segera disiapkan atau ditangguhkan hingga SQLExecute, SQLDescribeCol atau SQLDescribeParam dijalankan. Di SQL Server 7.0 dan yang lebih lama, properti ini diabaikan (tidak ada persiapan yang ditangguhkan). Nilai ValuePtr berjenis SQLLEN.

Nilai ValuePtr Deskripsi
SQL_DP_ON Default. Setelah memanggil Fungsi SQLPrepare, persiapan pernyataan ditangguhkan hingga SQLExecute dipanggil atau operasi metaproperti (SQLDescribeCol atau SQLDescribeParam) dijalankan.
SQL_DP_OFF Pernyataan ini disiapkan segera setelah SQLPrepare dijalankan.

SQL_SOPT_SS_REGIONALIZE

Atribut SQL_SOPT_SS_REGIONALIZE digunakan untuk menentukan konversi data di tingkat pernyataan. Atribut menyebabkan driver menghormati pengaturan lokal klien saat mengonversi nilai tanggal, waktu, dan mata uang menjadi string karakter. Konversinya adalah dari jenis data asli SQL Server ke string karakter saja.

Nilai ValuePtr berjenis SQLLEN.

Nilai ValuePtr Deskripsi
SQL_RE_OFF Default. Driver tidak mengonversi data tanggal, waktu, dan mata uang menjadi data string karakter menggunakan pengaturan lokal klien.
SQL_RE_ON Driver menggunakan pengaturan lokal klien saat mengonversi data tanggal, waktu, dan mata uang ke data string karakter.

Pengaturan konversi regional berlaku untuk jenis data mata uang, numerik, tanggal, dan waktu. Pengaturan konversi hanya berlaku untuk konversi output saat nilai mata uang, numerik, tanggal, atau waktu dikonversi ke string karakter.

Catatan

Ketika opsi pernyataan SQL_SOPT_SS_REGIONALIZE aktif, driver menggunakan pengaturan registri lokal untuk pengguna saat ini. Driver tidak menghormati lokal utas saat ini jika aplikasi mengaturnya, misalnya, memanggil SetThreadLocale.

Mengubah perilaku regional sumber data dapat menyebabkan kegagalan aplikasi. Aplikasi yang mengurai string tanggal dan mengharapkan string tanggal muncul seperti yang didefinisikan oleh ODBC, dapat dipengaruhi dengan mengubah nilai ini.

SQL_SOPT_SS_TEXTPTR_LOGGING

Atribut SQL_SOPT_SS_TEXTPTR_LOGGING mengalihkan pengelogan operasi pada kolom yang berisi data teks atau gambar . Nilai ValuePtr berjenis SQLLEN.

Nilai ValuePtr Deskripsi
SQL_TL_OFF Menonaktifkan pengelogan operasi yang dilakukan pada data teks dan gambar .
SQL_TL_ON Default. Memungkinkan pengelogan operasi yang dilakukan pada data teks dan gambar .

SQL_SOPT_SS_HIDDEN_COLUMNS

Atribut SQL_SOPT_SS_HIDDEN_COLUMNS mengekspos, dalam kumpulan hasil, kolom tersembunyi dalam pernyataan SQL Server SELECT FOR BROWSE. Driver tidak mengekspos kolom ini secara default. Nilai ValuePtr berjenis SQLLEN.

Nilai ValuePtr Deskripsi
SQL_HC_OFF Default. UNTUK kolom TELUSURI disembunyikan dari kumpulan hasil.
SQL_HC_ON Mengekspos kolom TELUSURI.

SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT

Atribut SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT mengembalikan teks pesan untuk permintaan pemberitahuan kueri.

SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS

Atribut SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS menentukan opsi yang digunakan untuk permintaan pemberitahuan kueri. Ini ditentukan dalam string dengan name=value sintaks seperti yang ditentukan di bawah ini. Aplikasi bertanggung jawab untuk membuat layanan dan membaca pemberitahuan dari antrean.

Sintaksis string opsi pemberitahuan kueri adalah:

service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]

Contohnya:

service=mySSBService;local database=mydb

SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT

Atribut SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT menentukan jumlah detik pemberitahuan kueri untuk tetap aktif. Nilai defaultnya adalah 432000 detik (5 hari). Nilai ValuePtr berjenis SQLLEN.

SQL_SOPT_SS_PARAM_FOCUS

Atribut SQL_SOPT_SS_PARAM_FOCUS menentukan fokus untuk panggilan SQLBindParameter, SQLGetDescField, SQLSetDescField, SQLGetDescRec, dan SQLSetDescRec berikutnya.

Jenis untuk SQL_SOPT_SS_PARAM_FOCUS adalah SQLULEN.

Defaultnya adalah 0, yang berarti bahwa parameter alamat panggilan ini sesuai dengan penanda parameter dalam pernyataan SQL. Saat diatur ke nomor parameter parameter bernilai tabel, kolom alamat panggilan ini dari parameter bernilai tabel tersebut. Saat diatur ke nilai yang bukan nomor parameter parameter bernilai tabel, panggilan ini mengembalikan kesalahan IM020: "Fokus parameter tidak merujuk ke parameter bernilai tabel".

SQL_SOPT_SS_NAME_SCOPE

Atribut SQL_SOPT_SS_NAME_SCOPE menentukan cakupan nama untuk panggilan fungsi katalog berikutnya. Tataan hasil yang dikembalikan oleh SQLColumns bergantung pada pengaturan SQL_SOPT_SS_NAME_SCOPE.

Jenis untuk SQL_SOPT_SS_NAME_SCOPE adalah SQLULEN.

Nilai ValuePtr Deskripsi
SQL_SS_NAME_SCOPE_TABLE Default.

Saat menggunakan parameter bernilai tabel, menunjukkan bahwa metadata untuk tabel aktual harus dikembalikan.

Saat menggunakan fitur kolom jarang, SQLColumns hanya akan mengembalikan kolom yang bukan anggota column_set jarang.
SQL_SS_NAME_SCOPE_TABLE_TYPE Menunjukkan bahwa aplikasi memerlukan metadata untuk jenis tabel, bukan tabel aktual (fungsi katalog harus mengembalikan metadata untuk jenis tabel). Aplikasi kemudian meneruskan TYPE_NAME parameter bernilai tabel sebagai parameter TableName .
SQL_SS_NAME_SCOPE_EXTENDED Saat menggunakan fitur kolom jarang, SQLColumns mengembalikan semua kolom, terlepas dari keanggotaan column_set .
SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET Saat menggunakan fitur kolom jarang, SQLColumns hanya mengembalikan kolom yang merupakan anggota column_set jarang.
SQL_SS_NAME_SCOPE_DEFAULT Sama dengan SQL_SS_NAME_SCOPE_TABLE.

SS_TYPE_CATALOG_NAME dan SS_TYPE_SCHEMA_NAME digunakan dengan parameter CatalogName dan SchemaName , masing-masing, untuk mengidentifikasi katalog dan skema untuk parameter bernilai tabel. Setelah aplikasi selesai mengambil metadata untuk parameter bernilai tabel, aplikasi harus mengatur SQL_SOPT_SS_NAME_SCOPE kembali ke nilai default SQL_SS_NAME_SCOPE_TABLE.

Ketika SQL_SOPT_SS_NAME_SCOPE diatur ke SQL_SS_NAME_SCOPE_TABLE, kueri ke server tertaut gagal. Panggilan ke SQLColumns atau SQLPrimaryKeys dengan katalog yang berisi komponen server akan gagal.

Jika Anda mencoba mengatur SQL_SOPT_SS_NAME_SCOPE ke nilai yang tidak valid, SQL_ERROR dikembalikan dan rekaman diagnostik dihasilkan dengan SQLSTATE HY024 dan pesan "Nilai atribut tidak valid".

Jika fungsi katalog selain SQLTables, SQLColumns, atau SQLPrimaryKeys dipanggil saat SQL_SOPT_SS_NAME_SCOPE memiliki nilai selain SQL_SS_NAME_SCOPE_TABLE, SQL_ERROR dikembalikan. Rekaman diagnostik dihasilkan dengan SQLSTATE HY010 dan pesan "Kesalahan urutan fungsi (SQL_SOPT_SS_NAME_SCOPE tidak diatur ke SQL_SS_NAME_SCOPE_TABLE)".

Lihat Juga

Fungsi SQLGetStmtAttr
Detail Implementasi ODBC API