Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melewati Parameter kepada OPENQUERY dalam Pelayan SQL?

Bagaimanakah Saya Boleh Melewati Parameter kepada OPENQUERY dalam Pelayan SQL?

Linda Hamilton
Lepaskan: 2025-01-14 12:27:42
asal
356 orang telah melayarinya

How Can I Pass Parameters to an OPENQUERY in SQL Server?

Melalukan Parameter ke OPENQUERY dalam SQL Server

Penyataan

SQL Server OPENQUERY melaksanakan pertanyaan pada pelayan terpaut. Walau bagaimanapun, membenamkan parameter secara langsung dalam pernyataan OPENQUERY tidak disokong. Dokumentasi Microsoft dengan jelas menyatakan bahawa OPENQUERY tidak menerima pembolehubah sebagai hujah. Mari terokai penyelesaian yang berkesan:

Kaedah 1: Nilai Pengekodan Keras (untuk bilangan parameter yang terhad)

Pendekatan ini sesuai apabila anda perlu lulus hanya beberapa nilai tertentu. Penggabungan rentetan digunakan untuk membina pertanyaan:

<code class="language-sql">DECLARE @TSQL varchar(8000), @VAR char(2);
SELECT @VAR = 'CA';
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')';
EXEC (@TSQL);</code>
Salin selepas log masuk

Kaedah 2: Pembinaan Pertanyaan Dinamik (untuk pertanyaan yang lebih kompleks atau nama pelayan terpaut dinamik)

Untuk pertanyaan atau senario yang lebih rumit di mana nama pelayan yang dipautkan berubah-ubah, SQL dinamik menawarkan penyelesaian:

<code class="language-sql">DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000);
SET @LinkedServer = 'MyLinkedServer';
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''';
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')';
EXEC (@OPENQUERY+@TSQL);</code>
Salin selepas log masuk

Kaedah 3: Menggunakan sp_executesql (untuk meminimumkan isu petikan)

Untuk mengelakkan penyambungan rentetan yang kompleks dan kemungkinan masalah petikan, sp_executesql menyediakan penyelesaian yang lebih bersih:

<code class="language-sql">DECLARE @VAR char(2);
SELECT @VAR = 'CA';
EXEC MyLinkedServer.master.dbo.sp_executesql
N'SELECT * FROM pubs.dbo.authors WHERE state = @state',
N'@state char(2)',
@VAR;</code>
Salin selepas log masuk

Kaedah ini menawarkan cara praktikal untuk memasukkan parameter ke dalam pernyataan OPENQUERY anda, membolehkan interaksi yang cekap dengan pelayan terpaut. Pilih kaedah yang paling sesuai dengan keperluan dan kerumitan khusus anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melewati Parameter kepada OPENQUERY dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan