in

sql: debe declarar la variable escalar

apple touch icon@2

No se puede concatenar un int a una cadena. En lugar de:

SET @sql = N'DECLARE @Rt int; SET @Rt=" + @RowTo;

Necesitas:

SET @sql = N"DECLARE @Rt int; SET @Rt=" + CONVERT(VARCHAR(12), @RowTo);

Para ayudar a ilustrar lo que está sucediendo aquí. Digamos @RowTo = 5.

DECLARE @RowTo int;
SET @RowTo = 5;

DECLARE @sql nvarchar(max);
SET @sql = N'SELECT ' + CONVERT(varchar(12), @RowTo) + ' * 5';
EXEC sys.sp_executesql @sql;

Para construir eso en una cadena (incluso si finalmente será un número), necesito convertirlo. Pero como puede ver, el número todavía se trata como un número cuando se ejecuta. La respuesta es 25, ¿verdad?

En su caso, puede usar la parametrización adecuada en lugar de usar la concatenación que, si adquiere ese hábito, se expondrá a la inyección de SQL en algún momento (consulte esta y esta:

SET @sql = @sql + ' WHERE RowNum BETWEEN @RowFrom AND @RowTo;';

EXEC sys.sp_executesql @sql,
  N'@RowFrom int, @RowTo int',
  @RowFrom, @RowTo;

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Función de biblioteca C – cos ()

gfg 200x200 min

Método JavaScript String toLowerCase () – GeeksforGeeks