Heim >Datenbank >MySQL-Tutorial >Wie parametrisiert man Pass-Through-Abfragen in Dynamic SQL von T-SQL richtig?

Wie parametrisiert man Pass-Through-Abfragen in Dynamic SQL von T-SQL richtig?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 07:01:45190Durchsuche

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

Dynamisches SQL in T-SQL: Paramaterisiertes Pass-Through

In T-SQL kann dynamisches SQL ein nützliches Werkzeug zum Erstellen von Abfragen sein zur Laufzeit. Es ist jedoch wichtig zu verstehen, wie mit Parametern in dynamischen SQL-Anweisungen umgegangen wird.

Betrachten Sie die folgende dynamische Abfrage:

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

Diese Abfrage versucht, Daten aus der ComposeMail-Tabelle basierend auf auszuwählen @p_CreatedBy-Parameter. Wenn diese Abfrage jedoch mit Parametern ausgeführt wird, werden keine Ergebnisse zurückgegeben.

Um dieses Problem zu beheben, ist es wichtig, die Parameter an sp_executesql zu übergeben, wie im folgenden Code gezeigt:

...
WHERE 
    CreatedBy = @p
...

EXECUTE sp_executesql @sql, N'@p UNIQUEIDENTIFIER', @p = @p_CreatedBY

In diesem aktualisierten Code ist der @p-Parameter als UNIQUEIDENTIFIER-Typ definiert und sein Wert wird auf den @p_CreatedBY-Parameter gesetzt. Dadurch wird sichergestellt, dass der Parameter ordnungsgemäß an die dynamische SQL-Anweisung übergeben wird.

Durch Befolgen dieser Technik können Sie Parameter effektiv in dynamischen SQL-Abfragen in T-SQL verwenden.

Das obige ist der detaillierte Inhalt vonWie parametrisiert man Pass-Through-Abfragen in Dynamic SQL von T-SQL richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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