2014-06-18 78 views
0

好的,我认为添加cast语句会很容易。但是,经过研究,我不确定为什么下面的代码不起作用。Casting Errors Invalid Syntax

错误消息:从NVarChar(100)投射到VarChar(100)时可能会发生数据丢失。
守则我一起工作:

exec dbo.Update 
    @customerId, 
    @vehicleId, 
    @rowNumber output; 

我曾尝试:

exec dbo.Update 
     @customerId, 
     cast(@vehicleId as varchar(100)), 
     @rowNumber output; 

也试过:

exec dbo.Update 
      @customerId, 
      cast((@vehicleId) as varchar(100)), 
      @rowNumber output; 
+1

'NV archar'包含比'varchar'更多的数据。为了将它与数字进行比较,就像试图将'BigInt'投入到'Int'中一样。它会抛出错误,因为数据可能会丢失。 – Siyual

+0

是的,我想明确地施展它。有什么建议么? – ChaseHardin

+0

你为什么要施放它?有没有更大的问题,你遇到,你正在试图解决使用铸造? – Jenn

回答

0

我做了一些更多的研究,并找到了解决办法:

declare @tempVehicleId varchar(100); 

select @tempVehicleId = cast(@vehicleId as varchar(100)) 

exec dbo.Update 
    @customerId, 
    @tempVehicleId, 
    @rowNumber output;