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!