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 )
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)
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!