Maison > base de données > tutoriel mysql > Comment paramétrer correctement les requêtes Pass-Through dans le SQL dynamique de T-SQL ?

Comment paramétrer correctement les requêtes Pass-Through dans le SQL dynamique de T-SQL ?

Susan Sarandon
Libérer: 2025-01-03 07:01:45
original
183 Les gens l'ont consulté

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

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal