Heim > Datenbank > MySQL-Tutorial > Wie übergebe ich UNIQUEIDENTIFIER-Parameter in dynamischem T-SQL mithilfe von sp_executesql korrekt?

Wie übergebe ich UNIQUEIDENTIFIER-Parameter in dynamischem T-SQL mithilfe von sp_executesql korrekt?

Patricia Arquette
Freigeben: 2025-01-03 12:47:39
Original
529 Leute haben es durchsucht

How to Correctly Pass UNIQUEIDENTIFIER Parameters in Dynamic T-SQL using sp_executesql?

Übergabe von Parametern in dynamischem T-SQL mit sp_executesql

In dynamischem T-SQL kann die Übergabe von Parametern an Abfragen, die mit sp_executesql ausgeführt werden, eine Herausforderung sein . Dieser Artikel befasst sich mit einem häufigen Problem bei der Verwendung von dynamischem SQL mit WHERE-Klauseln, die UNIQUEIDENTIFIER-Parameter erwarten.

Betrachten Sie das folgende Beispiel, bei dem der sp_executesql-Anweisung die erforderliche Parameterbindung fehlt:

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
Nach dem Login kopieren

Wann Wenn diese Prozedur ausgeführt wird, schlägt die Bedingung der WHERE-Klausel fehl, da der Parameter @p_CreatedBy nicht an das dynamische SQL gebunden ist Abfrage.

Um dieses Problem zu beheben, müssen Parameter explizit an sp_executesql übergeben werden. Laut MSDN lautet die korrekte Syntax:

EXECUTE sp_executesql @sql, N'@p UNIQUEIDENTIFIER', @p = @p_CreatedBY
Nach dem Login kopieren

Dadurch wird sichergestellt, dass der Parameter @p_CreatedBy dem Parameter @p in der dynamischen SQL-Anweisung zugewiesen wird, sodass die WHERE-Klausel die Bedingung korrekt auswerten kann.

Das obige ist der detaillierte Inhalt vonWie übergebe ich UNIQUEIDENTIFIER-Parameter in dynamischem T-SQL mithilfe von sp_executesql korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage