Résolution de l'erreur de compilation avec les paramètres d'entrée globaux "@RowFrom" et "@RowTo"
Dans une procédure stockée, déclarer les paramètres d'entrée globaux est nécessaires à leur utilisation dans le cadre de la procédure. Cependant, lors de l'exécution d'une requête SQL compilée dans la procédure stockée à l'aide de "Exec (@sqlstatement)", l'erreur "Doit déclarer la variable scalaire '@RowFrom'" peut survenir si les paramètres d'entrée "@RowFrom" ou "@RowTo" sont pas correctement déclaré ou utilisé.
Le message d'erreur fourni indique que la variable "@RowFrom" n'a pas été déclarée. Pour résoudre ce problème, déclarez explicitement "@RowFrom" et "@RowTo" comme variables scalaires dans la procédure stockée avant de les référencer dans la requête SQL.
De plus, lorsque vous essayez d'attribuer la valeur de "@RowTo" à une nouvelle variable utilisant la concaténation, assurez-vous que le type de variable est converti de manière appropriée. Au lieu de la syntaxe incorrecte
SET @Rt = ' + @RowTo
utilisez la syntaxe correcte pour convertir "@RowTo" en chaîne :
SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo)
Les versions modernes de SQL Server prennent en charge la fonction CONCAT(), qui simplifie ces opérations :
SET @sql = N'SELECT ' + CONVERT(varchar(12), @RowTo) + ' * 5';
Cependant, pour une meilleure sécurité contre l'injection SQL, il est recommandé d'utiliser des instructions SQL paramétrées au lieu de la concaténation. Cela implique de transmettre explicitement les paramètres d'entrée à la requête SQL, comme dans l'exemple suivant :
SET @sql = @sql + ' WHERE RowNum BETWEEN @RowFrom AND @RowTo;'; EXEC sys.sp_executesql @sql, N'@RowFrom int, @RowTo int', @RowFrom, @RowTo;
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!