Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membetulkan Ralat 'Sintaks yang salah berhampiran ' '' dalam Pertanyaan OPENROWSET dengan Pembolehubah?

Bagaimana untuk Membetulkan Ralat 'Sintaks yang salah berhampiran ' '' dalam Pertanyaan OPENROWSET dengan Pembolehubah?

Susan Sarandon
Lepaskan: 2025-01-03 22:53:41
asal
883 orang telah melayarinya

How to Fix

Menyelesaikan Masalah OPENROWSET Pertanyaan dengan Pembolehubah

Apabila menggunakan fungsi OPENROWSET untuk mengakses data luaran, anda mungkin menghadapi ralat jika anda memasukkan ungkapan pembolehubah dalam rentetan pertanyaan. Satu contoh sedemikian ialah ralat "Sintaks salah berhampiran ' '." Ini berlaku apabila anda cuba menggabungkan pembolehubah dengan pernyataan OPENROWSET, seperti yang dilihat dalam pertanyaan berikut:

SELECT * 
FROM OPENROWSET(
    'SQLNCLI',
    'DRIVER={SQL Server};',
    'EXEC dbo.sProc1 @ID = ' + @id 
 )
Salin selepas log masuk

Dalam pertanyaan ini, pembolehubah @id sedang dilampirkan pada pernyataan EXEC menggunakan operator ' ' . Walau bagaimanapun, OPENROWSET tidak menyokong penggunaan ungkapan dalam rentetan pertanyaannya.

Penyelesaian:

Untuk menyelesaikan isu ini, anda tidak boleh terus menggunakan pembolehubah dalam pertanyaan OPENROWSET. Sebaliknya, anda boleh membuat SQL dinamik untuk lulus parameter. Berikut ialah contoh:

Declare @ID int
Declare @sql nvarchar(max)
Set @ID=1
Set @sql='SELECT * 
FROM OPENROWSET(
               ''SQLNCLI'',
               ''DRIVER={SQL Server};'',
               ''EXEC dbo.usp_SO @ID =' + convert(varchar(10),@ID) + ''')'

-- Print @sql
 Exec(@sql)
Salin selepas log masuk

Dalam penyelesaian ini, kami mentakrifkan pembolehubah @sql untuk memegang pertanyaan SQL dinamik dan menggabungkan pembolehubah @ID menggunakan fungsi CONVERT(). Ini membolehkan kami melaksanakan pernyataan SQL dinamik dengan parameter yang dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Sintaks yang salah berhampiran ' '' dalam Pertanyaan OPENROWSET dengan Pembolehubah?. 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