Ошибка «Нельзя указывать десятичный (5,2) тип данных (параметр 4) в качестве параметра подстановки» в SQL Server 2008 - PullRequest
4 голосов
/ 03 ноября 2011

В SQL Server 2008 я получаю следующую ошибку:

Невозможно указать десятичный (5,2) тип данных (параметр 4) в качестве замены параметр.

Только что посмотрел на триггер на столе, и похоже, что проблема связана с этим if

if @SumField7 <> 100
    begin
        rollback tran
        raiserror ('...%d...', 16, 1, @SumField7)
    end

Ответы [ 2 ]

6 голосов
/ 04 ноября 2011

Проблема легко воспроизводится

declare @SumField7 decimal(5,2) = 123.45

raiserror ('...%d...', 16, 1, @SumField7)

Вы указываете %d как спецификацию типа, которая представляет целое число со знаком , но передает его decimal.Возможно, это никогда не проверялось в SQL Server 2000.

Похоже, что нет синтаксиса для decimal заполнителей, и вам нужно будет вместо этого передать строку, как показано ниже.

declare @SumField7 decimal(5,2) = 123.45
declare @SumField7String varchar(7) = @SumField7

raiserror ('...%s...', 16, 1, @SumField7String)
5 голосов
/ 03 ноября 2011

Ошибка обычно вызывается RAISERROR и несовпадением параметров с заполнителем.

Есть ли у вас триггер с RAISERROR?Это не ВСТАВКА ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...