Я создаю этот динамический sql, но получаю сообщение об ошибке при его выполнении.В sql sever, построение динамического sql с целыми переменными
Conversion failed when converting the varchar value 'SELECT
DDoSAttacksId,
AttackId,
TargetIP,
PeakBPS,
DateStarted
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY DateStarted Desc) AS Row,
DDoSAttacksId AS DDoSAttacksId,
AttackId AS AttackId,
TargetIP As TargetIP,
CONCAT(PeakBPS/1000000000,' Gbps') As PeakBPS,
DateStarted AS DateStarted
FROM
DDosAttacks
WHERE TargetIP IN ('108.61.51.101', '206.221.181.5')) AS DDosAttacksRows
WHERE
(Row between (' to data type int.
Примечание: оно подключается к IP-адресу только в порядке, но не в целых значениях.
set quoted_identifier off
declare @sql nvarchar(4000),
@PageNumber int,
@PageSize int,
@IPAddressList varchar(100)
Select @IPAddressList = "'108.61.51.101', '206.221.181.5'"
select @sql= 'SELECT
DDoSAttacksId,
AttackId,
TargetIP,
PeakBPS,
DateStarted
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY DateStarted Desc) AS Row,
DDoSAttacksId AS DDoSAttacksId,
AttackId AS AttackId,
TargetIP As TargetIP,
CONCAT(PeakBPS/1000000000,'' Gbps'') As PeakBPS,
DateStarted AS DateStarted
FROM
DDosAttacks
WHERE TargetIP IN ('[email protected]+')) AS DDosAttacksRows
WHERE
(Row between ('[email protected]+' * ('[email protected]+' - '[email protected]+')) AND ('[email protected]+' * ('[email protected]+' - 1)))';
EXECUTE sp_executesql @sql
Я могу точные цифры кода на их месте он и выполняет отлично .... например (строка между (1 * (20 - 20)) и (1 * (20 - 1)));
Возможно, вы пытаетесь построить строку 'NVARCHAR', объединив тип' int' (т. Е. '@ PageNumber' в строке' (строка между ('+ @PageNumber + строка), которая является недопустимой. –
Возможный дубликат из [Как объединить числа и строки для форматирования чисел в T-SQL?] (http://stackoverflow.com/questions/951320/how-to-concatenate-numbers-and-strings-to-format-numbers-in- t-sql) – LittleBobbyTables