Krishna Veni Ответов: 2

Указанный отлит из системы материализованный '.типа int32' к 'системе.тип boolean' не является допустимым.


При вызове storeprocedure я получил ошибку в storeprocedure на этой строке

"case when Id is null then 0 else 1 end as isparent"

эта строка означает, что если Id равен нулю, то 0 перейдет к isparent, в противном случае-к isparent.


Пожалуйста, помогите мне.
Спасибо

Что я уже пробовал:

эта строка означает, что если Id равен нулю, то 0 перейдет к isparent, в противном случае-к isparent.

2 Ответов

Рейтинг:
1

OriginalGriff

Мы не можем сказать, основываясь на этом маленьком фрагменте.
Если я использую это в SQL-операторе и запускаю его против своей БД:

SELECT TOP 10 
   CASE WHEN Id IS NULL 
        THEN 0 
        ELSE 1 
   END AS IsParent 
FROM MyTable
Это прекрасно работает: я получаю один столбец, содержащий 10 1 или 0.

Поэтому вам нужно посмотреть на свой SP более подробно и выяснить, где используется этот фрагмент кода и что делает остальная часть SP / вашего приложения с этим результатом - где-то он ожидает логическое значение и получает это целое число, но мы понятия не имеем, где!

Мы не можем сделать это для вас: у нас нет доступа ни к чему, кроме того, что вы печатаете!


Рейтинг:
0

Richard Deeming

Вы возвращаете int, который сопоставляется с System.Int32 тип. Но вы пытаетесь сопоставить его с System.Boolean, так что вы должны вернуть bit вместо:

CASE WHEN Id Is Null THEN CAST(0 As bit) Else CAST(1 As bit) END As IsParent