2016-01-15 107 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