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に変換するときに変換に失敗しました。

4

3 に答える 3

6

あなたのコードには行が含まれています

return @uname

return ステートメントは整数値のみを受け入れることができます。ただし、@uname パラメーターは出力パラメーターであるため、これも返す必要はありません。OUTPUTsproc を呼び出すときに指定することを確認してください。

EXEC dbo.Signin_Check @uid, @password, @uname OUTPUT;
于 2013-01-02T21:54:59.853 に答える
0

SP にはエラーに関連する悪いコードはないようです。ストアド プロシージャに渡されるパラメーター (つまり、順序と型) をよく確認していただけますか? 問題は、実際の手順ではなく、渡す値である可能性があります。

ストアド プロシージャを呼び出すときに使用しているコードを投稿に追加していただけますか?

于 2013-01-02T21:45:19.503 に答える
0

それは確かにvarchar列ですか?

@uid varchar(50) / int
uid = @uid
于 2013-01-02T21:48:20.287 に答える