Heim > Datenbank > MySQL-Tutorial > Wie übergebe ich Parameter in dynamischen T-SQL-SQL-Anweisungen korrekt?

Wie übergebe ich Parameter in dynamischen T-SQL-SQL-Anweisungen korrekt?

DDD
Freigeben: 2025-01-05 03:02:39
Original
708 Leute haben es durchsucht

How to Correctly Pass Parameters in T-SQL Dynamic SQL Statements?

Übergabe von Parametern in dynamischen SQL-Anweisungen mit T-SQL

In T-SQL bietet dynamisches SQL eine Möglichkeit, SQL-Anweisungen zu erstellen und auszuführen programmatisch. Bei der Verwendung von Parametern in dynamischem SQL ist es wichtig, die richtige Syntax zu verstehen.

Betrachten Sie das folgende Beispiel:

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

Wenn diese Prozedur ohne WHERE-Klausel ausgeführt wird, funktioniert sie einwandfrei. Wenn jedoch eine WHERE-Klausel mit einem UNIQUEIDENTIFIER-Parameter hinzugefügt wird, werden keine Ergebnisse zurückgegeben. Das Problem liegt in der falschen Verwendung von Parametern in der dynamischen SQL-Anweisung.

Um dieses Problem zu beheben, müssen Parameter an die sp_executesql-Anweisung übergeben werden. Gemäß MSDN:

...
 WHERE 
    CreatedBy = @p
...

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

In diesem geänderten Code wird der Parameter @p in der WHERE-Klausel verwendet und die sp_executesql-Anweisung wird aufgerufen, wobei der @p-Parameter auf den Wert von @p_CreatedBY gesetzt ist. Dadurch wird sichergestellt, dass der Parameter UNIQUEIDENTIFIER korrekt an die dynamische SQL-Anweisung übergeben wird.

Das obige ist der detaillierte Inhalt vonWie übergebe ich Parameter in dynamischen T-SQL-SQL-Anweisungen 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage