我搜索和搜索,但仍然...给了我一个错误。将数据类型varchar转换为浮动SQL Server存储过程出错
我有这个存储过程:
CREATE procedure _spItemList
(
@branch nchar(12)
, @ItemNo float
, @ItemDescription char(60)
)
as
begin
SET NOCOUNT ON;
select
Branch
, CONVERT(varchar(100), ItemNo) ItemNo
, Description1
, Description2
, FullDescription
from
_ItemList
where
(Branch LIKE '%' + @branch + '%' or ISNULL(@branch, '') = '')
and (ItemNo LIKE '%' + @ItemNo + '%' or ISNULL(@ItemNo, '') = '')
and (FullDescription LIKE '%' + @ItemDescription + '%' or ISNULL(@ItemDescription, '') = '')
end
我有以下表结构:
CREATE TABLE _ItemList
(
[ItemNo] [float] NULL,
[Description1] [char](30) NULL,
[Description2] [char](30) NULL,
[FullDescription] [char](60) NULL
)
当我执行存储过程,我得到一个错误:
Error converting data type varchar to float
怎么了?存储过程中的SQL Server参数与表中的列具有相同的数据类型。有人知道吗?
旁注:'CHAR(60)'是一个非常糟糕的选择 - 无论您确实存储了多少个字符,它总是以**空格填充到定义的长度。随着时间的推移,这会造成巨大的空间浪费 - 请使用'varchar(60)'(对于长度超过10个字符的任何字符串)! –