Lors de la tentative de création d'une connexion SQL dans une procédure stockée à l'aide de paramètres dynamiques, les développeurs peuvent rencontrer l'erreur « Syntaxe incorrecte près de '@username '." Ce message énigmatique peut être trompeur et prêter à confusion.
Le problème sous-jacent est que l'instruction CREATE LOGIN n'accepte que les noms d'utilisateur littéraux, pas les paramètres. Pour contourner cette limitation, il faut utiliser une solution de contournement :
Voici un exemple de la façon dont cette solution de contournement peut être implémentée :
DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, ''''); EXEC(@sql)
Ce code construit d'abord la chaîne de commande SQL dynamique, en garantissant que le nom d'utilisateur et le mot de passe sont cité pour la sécurité contre les attaques par injection SQL. Il exécute ensuite la commande SQL dynamique à l'aide de l'instruction EXEC, créant ainsi la connexion SQL.
En adoptant cette approche, les développeurs peuvent surmonter la limitation de CREATE LOGIN n'acceptant que les littéraux et créer dynamiquement des connexions SQL dans leurs procédures stockées.
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!