SQL dynamique dans T-SQL : Pass-Through paramétré
Dans T-SQL, le SQL dynamique peut être un outil utile pour construire des requêtes au moment de l'exécution. Cependant, il est important de comprendre comment gérer les paramètres dans les instructions SQL dynamiques.
Considérez la requête dynamique suivante :
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
Cette requête tente de sélectionner des données de la table ComposeMail en fonction de la Paramètre @p_CreatedBy. Cependant, lors de l'exécution de cette requête avec des paramètres, aucun résultat n'est renvoyé.
Pour résoudre ce problème, il est crucial de transmettre les paramètres à sp_executesql, comme démontré dans le code suivant :
... WHERE CreatedBy = @p ... EXECUTE sp_executesql @sql, N'@p UNIQUEIDENTIFIER', @p = @p_CreatedBY
Dans ce code mis à jour, le paramètre @p est défini comme un type UNIQUEIDENTIFIER et sa valeur est définie sur le paramètre @p_CreatedBY. Cela garantit que le paramètre est correctement transmis à l'instruction SQL dynamique.
En suivant cette technique, vous pouvez utiliser efficacement les paramètres dans les requêtes SQL dynamiques dans T-SQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!