2013-01-02 42 views
0
ALTER PROCEDURE [dbo].[Signin_Check] 
    @uid varchar(50), @pwd varchar(50), @uname varchar(50) output 
AS 
    IF EXISTS (SELECT * FROM threeLayer_user WHERE uid = @uid and pass = @pwd) 
    BEGIN 
     -- SET NOCOUNT ON added to prevent extra result sets from 
     -- interfering with SELECT statements. 
     SET NOCOUNT ON; 

     SELECT @uname = name 
     FROM threeLayer_user 
     WHERE uid = @uid and pass = @pwd 

     RETURN @uname 
    END 

此存儲過程引發錯誤:轉換VARCHAR值「Saurav」爲數據類型int時錯誤在存儲過程的字符串返回類型

轉換失敗。

+1

表中的數據類型是什麼? – Taryn

回答

0

SP似乎沒有與錯誤相關的錯誤代碼,您能否很好地檢查傳遞給存儲過程的參數(即它們的順序和類型)?這個問題可以是你傳遞的值,而不是實際的過程。

你能添加到您的文章,當你調用存儲過程,你正在使用的代碼?

0

你確定它的varchar列?

@uid varchar(50)/int 
uid = @uid 
6

你的代碼中包含了行

return @uname 

return語句只能接受整數值。然而,你的@uname參數是一個輸出參數,所以你不需要也返回。只需確保在撥打存儲區時指定了OUTPUT

EXEC dbo.Signin_Check @uid, @password, @uname OUTPUT; 
相關問題