Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melewati Parameter dengan Betul dalam Pernyataan SQL Dinamik T-SQL?
Melalui Parameter dalam Pernyataan SQL Dinamik dengan T-SQL
Dalam T-SQL, SQL dinamik menyediakan cara untuk membina dan melaksanakan pernyataan SQL secara pemrograman. Apabila menggunakan parameter dalam SQL dinamik, adalah penting untuk memahami sintaks yang betul.
Pertimbangkan contoh berikut:
CREATE PROCEDURE [dbo].[sp_Test1] /* 'b0da56dc-fc73-4c0e-85f7-541e3e8f249d' */ ( @p_CreatedBy UNIQUEIDENTIFIER ) AS DECLARE @sql NVARCHAR(4000) SET @sql =' DECLARE @p_CreatedBY UNIQUEIDENTIFIER SELECT DateTime, Subject, CreatedBy FROM ( SELECT DateTime, Subject, CreatedBy, ROW_NUMBER() OVER(ORDER BY DateTime ) AS Indexing FROM ComposeMail WHERE CreatedBy = @p_CreatedBy /* <--- the problem is in this condition */ ) AS NewDataTable ' EXEC sp_executesql @sql
Apabila melaksanakan prosedur ini tanpa klausa WHERE, ia berfungsi dengan baik. Walau bagaimanapun, apabila klausa WHERE dengan parameter UNIQUEIDENTIFIER ditambah, tiada keputusan dikembalikan. Isunya terletak pada penggunaan parameter yang salah dalam pernyataan SQL dinamik.
Untuk menyelesaikan isu ini, parameter mesti dihantar ke pernyataan sp_executesql. Seperti dalam MSDN:
... WHERE CreatedBy = @p ... EXECUTE sp_executesql @sql, N'@p UNIQUEIDENTIFIER', @p = @p_CreatedBY
Dalam kod yang diubah suai ini, parameter @p digunakan dalam klausa WHERE, dan pernyataan sp_executesql digunakan dengan parameter @p ditetapkan kepada nilai @p_CreatedBY. Ini memastikan bahawa parameter UNIQUEIDENTIFIER dihantar dengan betul kepada pernyataan SQL dinamik.
Atas ialah kandungan terperinci Bagaimana untuk Melewati Parameter dengan Betul dalam Pernyataan SQL Dinamik T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!