对于@nReservationID
的某些值:
SELECT @phoneNumber=
CASE
WHEN ISNULL(rdg2.nPhoneNumber ,0) = 0 THEN ISNULL(rdg2.nMobileNumber, 0)
ELSE ISNULL(rdg2.nPhoneNumber ,0)
END
from tblReservation_Details_Guest rdg2
where nReservationID=@nReservationID
为什么我会收到此错误?
Msg 248,Level 16,State 1,Procedure USP_CRE_WEB_MEMBER_AUTOGENERATEDECV,第136行转换 varchar值'08041159620'溢出了一个int列。
答案 0 :(得分:8)
Declare @phoneNumber int
select @phoneNumber=Isnull('08041159620',0);
给出错误:
The conversion of the varchar value '8041159620' overflowed an int column.: select cast('8041159620' as int)
<强> AS 强>
整数定义为:
从-2 ^ 31(-2,147,483,648)到2 ^ 31 - 1(2,147,483,647)的整数(整数)数据。存储大小为4个字节。 int的SQL-92同义词是整数。
<强>解决方案强>
Declare @phoneNumber bigint
答案 1 :(得分:5)
感谢Ravi和其他用户.... 不过我已经有了解决方案
SELECT @phoneNumber=
CASE
WHEN ISNULL(rdg2.nPhoneNumber ,'0') in ('0','-',NULL)
THEN ISNULL(rdg2.nMobileNumber, '0')
WHEN ISNULL(rdg2.nMobileNumber, '0') in ('0','-',NULL)
THEN '0'
ELSE ISNULL(rdg2.nPhoneNumber ,'0')
END
FROM tblReservation_Details_Guest rdg2
WHERE nReservationID=@nReservationID
只需要输入'0'而不是0
答案 2 :(得分:0)
只需在各处创建rdg2.nPhoneNumber varchar而不是int即可!