2016-01-15 105 views
1

我尝试使用下面的函数SQL,错误“不能转换*为int”

alter function [dbo].[verClientUniq](@cid varchar(2)) 
returns int 
begin 
    declare @nr int 

    select @nr = count(*) 
    from Clients 
    where clientId = @cid; 

    return @nr 
end 

当我执行它在我的程序里面,我去查一下我的数据库中的记录是否存在过程“varchar'*'的第8行中的错误不能转换为int。”

这是怎么发生的?如何解决它?

消息245,级别16,状态1,过程verClientUniq,第8行
转换转换VARCHAR值 '*' 为数据类型int时失败。

我打电话的功能是这样的:

exec @isUnique = verClientUniq @cid; 
+0

我假设它是sql服务器代码,它在语法上是有效的。什么是确切的错误信息? –

+0

我已经写了确切的错误消息,在将varchar值'*'转换为数据类型int时转换失败。 – Mocktheduck

+0

你的函数至少遗漏了一个'AS',但是你能显示你在存储过程中如何调用这个函数吗? (此外,在哈姆雷特问你之前,你还没有写出确切的错误信息。) –

回答

1

clientIdint型的,当你路过@cidvarchar(2)其SQL Server试图转换为intWHERE条款。

+0

天啊,你是对的!谢谢! – Mocktheduck