Ошибка арифметического переполнения при преобразовании nvarchar в тип данных numeric при создании строки



Пытаюсь понять, почему я получаю эту ошибку, которая происходит при создании строки в exec



SET @SQLINSERTSTRINGFINAL = @SQLINSERTSTRING + @Suggested_Qty+''','''+
@Required_Qty+''','''+
@System_Cost+''','''+
@Revised_Cost


Эти 4 переменные заполняются из



convert(numeric(7,2),ltrim(rtrim(floor((case when r.calc_qty > 99999 then 99999 else r.calc_qty end)/(case when s.PLBCF_1 is null or s.PLBCF_1 =0 then 1 else s.PLBCF_1 end))))),
convert(numeric(7,2),ltrim(rtrim(floor((case when r.po_number <> 'NONE' then r.calc_qty else case when r.adj_qty > 99999 then 99999 else r.adj_qty end end)/(case when s.PLBCF_1 is null or s.PLBCF_1 = 0 then 1 else s.PLBCF_1 end))))),
convert(numeric(9,4),ltrim(rtrim(case when s.std_cost is null then r.std_cost else s.std_cost end))),
convert(numeric(9,4),ltrim(rtrim(r.std_cost)))


Я проверил каждую используемую таблицу, и они согласованы в типе столбца. Только не числовой в нем есть r. po_number, который может иметь значение 'NONE'

537   1  
sql

1 ответ:

Вам нужно преобразовать каждое числовое число в строку, когда вы устанавливаете конечное строковое значение следующим образом:

SET @SQLINSERTSTRINGFINAL = @SQLINSERTSTRING + convert(nvarchar(max), @Suggested_Qty)+''','''+
    convert(nvarchar(max), @Required_Qty)+''','''+
    convert(nvarchar(max), @System_Cost)+''','''+
    convert(nvarchar(max), @Revised_Cost)

Он не будет автоматически разыгрываться для вас

Comments

    Ничего не найдено.