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
Freigeben: 2025-01-03 07:01:45
Original
184 Leute haben es durchsucht

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

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

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!

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