Bagikan melalui


Parameter perintah

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Unduh driver OLE DB

Parameter ditandai dalam teks perintah dengan karakter tanda tanya. Misalnya, pernyataan SQL berikut ditandai untuk parameter input tunggal:

{call SalesByCategory('Produce', ?)}  

Untuk meningkatkan performa dengan mengurangi lalu lintas jaringan, Driver OLE DB untuk SQL Server tidak secara otomatis memperoleh informasi parameter kecuali ICommandWithParameters::GetParameterInfo atau ICommandPrepare::P repare dipanggil sebelum menjalankan perintah. Ini berarti bahwa Driver OLE DB untuk SQL Server tidak secara otomatis:

  • Verifikasi kebenaran jenis data yang ditentukan dengan ICommandWithParameters::SetParameterInfo.

  • Petakan dari DBTYPE yang ditentukan dalam informasi pengikatan aksesor ke jenis data SQL Server yang benar untuk parameter .

Aplikasi akan menerima kemungkinan kesalahan atau hilangnya presisi dengan salah satu metode ini jika mereka menentukan jenis data yang tidak kompatibel dengan jenis data SQL Server dari parameter.

Untuk memastikan hal ini tidak terjadi, aplikasi harus:

  • Pastikan pwszDataSourceType cocok dengan jenis data SQL Server untuk parameter jika hard-coding ICommandWithParameters::SetParameterInfo.

  • Pastikan bahwa nilai DBTYPE yang terikat ke parameter memiliki jenis yang sama dengan jenis data SQL Server untuk parameter jika hard-coding aksesor.

  • Kode aplikasi untuk memanggil ICommandWithParameters::GetParameterInfo sehingga penyedia dapat memperoleh jenis data SQL Server dari parameter secara dinamis. Perhatikan bahwa ini menyebabkan perjalanan pulang pergi jaringan tambahan ke server.

Catatan

Penyedia tidak mendukung panggilan ICommandWithParameters::GetParameterInfo untuk setiap pernyataan SQL Server UPDATE atau DELETE yang berisi klausul FROM; untuk pernyataan SQL apa pun tergantung pada subkueri yang berisi parameter; untuk pernyataan SQL yang berisi penanda parameter dalam kedua ekspresi perbandingan, seperti, atau predikat terukur; atau kueri di mana salah satu parameter adalah parameter ke fungsi. Saat memproses batch pernyataan SQL, penyedia juga tidak mendukung panggilan ICommandWithParameters::GetParameterInfo untuk penanda parameter dalam pernyataan setelah pernyataan pertama dalam batch. Komentar (/* */) tidak diizinkan dalam perintah Transact-SQL.

Driver OLE DB untuk SQL Server mendukung parameter input dalam perintah pernyataan SQL. Pada perintah panggilan prosedur, Driver OLE DB untuk SQL Server mendukung parameter input, output, dan input/output. Nilai parameter output dikembalikan ke aplikasi baik pada eksekusi (hanya jika tidak ada set baris yang dikembalikan) atau ketika semua set baris yang dikembalikan habis oleh aplikasi. Untuk memastikan bahwa nilai yang dikembalikan valid, gunakan IMultipleResults untuk memaksa konsumsi set baris.

Nama parameter prosedur tersimpan tidak perlu ditentukan dalam struktur DBPARAMBINDINFO. Gunakan NULL untuk nilai anggota pwszName untuk menunjukkan bahwa Driver OLE DB untuk SQL Server harus mengabaikan nama parameter dan hanya menggunakan ordinal yang ditentukan dalam anggota rgParamOrdinals dari ICommandWithParameters::SetParameterInfo. Jika teks perintah berisi parameter bernama dan tidak bernama, semua parameter yang tidak disebutkan namanya harus ditentukan sebelum parameter bernama.

Jika nama parameter prosedur tersimpan ditentukan, Driver OLE DB untuk SQL Server memeriksa nama untuk memastikan bahwa itu valid. Driver OLE DB untuk SQL Server mengembalikan kesalahan ketika menerima nama parameter yang salah dari konsumen.

Catatan

Untuk mengekspos dukungan untuk SQL Server XML dan jenis yang ditentukan pengguna (UDT), Driver OLE DB untuk SQL Server mengimplementasikan antarmuka ISSCommandWithParameters baru.

Lihat Juga

Perintah