Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengparameterkan Pertanyaan Laluan dengan Benar dalam SQL Dinamik T-SQL?

Bagaimana untuk Mengparameterkan Pertanyaan Laluan dengan Benar dalam SQL Dinamik T-SQL?

Susan Sarandon
Lepaskan: 2025-01-03 07:01:45
asal
232 orang telah melayarinya

How to Properly Parameterize Pass-Through Queries in T-SQL's Dynamic SQL?

SQL Dinamik dalam T-SQL: Paramatized Pass-Through

Dalam T-SQL, SQL dinamik boleh menjadi alat yang berguna untuk membina pertanyaan pada masa larian. Walau bagaimanapun, adalah penting untuk memahami cara mengendalikan parameter dalam pernyataan SQL dinamik.

Pertimbangkan pertanyaan dinamik 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
Salin selepas log masuk

Pertanyaan ini cuba memilih data daripada jadual ComposeMail berdasarkan @p_CreatedBy parameter. Walau bagaimanapun, apabila melaksanakan pertanyaan ini dengan parameter, tiada keputusan dikembalikan.

Untuk menyelesaikan isu ini, adalah penting untuk menghantar parameter kepada sp_executesql, seperti yang ditunjukkan dalam kod berikut:

...
WHERE 
    CreatedBy = @p
...

EXECUTE sp_executesql @sql, N'@p UNIQUEIDENTIFIER', @p = @p_CreatedBY
Salin selepas log masuk

Dalam kod yang dikemas kini ini, parameter @p ditakrifkan sebagai jenis UNIQUEIDENTIFIER dan nilainya ditetapkan kepada parameter @p_CreatedBY. Ini memastikan bahawa parameter dihantar dengan betul kepada pernyataan SQL dinamik.

Dengan mengikuti teknik ini, anda boleh menggunakan parameter dengan berkesan dalam pertanyaan SQL dinamik dalam T-SQL.

Atas ialah kandungan terperinci Bagaimana untuk Mengparameterkan Pertanyaan Laluan dengan Benar dalam SQL Dinamik T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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