2015-06-11 75 views
0

时转换失败我得到“转换nvarchar值'未定义'转换为数据类型int”时从我的存储过程转换失败。这是从WCF服务调用。 下面是我的存储过程的示例格式。将nvarchar值'undefined'转换为数据类型int

ALTER Procedure [dbo].[sp_GetLang] 
(
@UserID nchar(10), 
@Return nchar(10)='' output 
)AS BEGIN 
SET NOCOUNT ON; 
SELECT @Return = vc_LanguageName 
FROM [dbo].[vc_UserPrefrences] person INNER JOIN 
[dbo].[vc_Languages] lang on person.vc_LanguagID = lang.vc_LanguageID 
WHERE person.vc_UserID = @UserID 
END 

这里只有person.vc_UserID和vc_languageid是整数。

如果您知道,您可以提出一些解决方案。

谢谢!

+1

_Here仅person.vc_UserID和vc_languageid被integers_那你为什么它们定义为'NCHAR '在你的SP定义中?总是**总是**选择正确的数据类型http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data-type.aspx –

回答

0

您应该将@UserID nchar(10)更改为@UserID INT

0

你可以CASTvc_UserIDNCHAR在以下几点:

WHERE CAST(person.vc_UserID AS NCHAR(10)) = @UserID 

或改变数据类型变量@UserIDINT

相关问题