我创建了一个用户登录表,然后新建了一个登录验证的储存过程:
USE [SD]
GO
/****** Object:  StoredProcedure [dbo].[userLogin]    Script Date: 10/23/2013 18:56:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[userLogin]
@username NVarchar(50) ,@password NVarchar(150)
AS SELECT *from users where Username=@username and Password=@password;
执行储存过程:
USE [SD]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[userLogin]
@username = N'12',
@password = N'12'
SELECT 'Return Value' = @return_value
GO
不解的是该行内容查询出来了,然而'Return Value却显示为0.正常情况应该是为1.如果为0,那么我用户登录便一直等录失败。
请问这是哪里做错了,该怎样解决啊 大婶门@CSharperSQL2008,储存过程

解决方案 »

  1.   


    你写的是对的,但正常情况下,存储过程执行正确后,会返回0,而不是返回1,除非你在存储过程中写:return 1;那么会返回1的
      

  2.   

    举个例子,下面执行的是系统的存储过程,执行后,返回0,表示正常执行:declare @i intexec @i = sp_whoselect @i 
    /*
    0
    */
      

  3.   


    你写的是对的,但正常情况下,存储过程执行正确后,会返回0,而不是返回1,除非你在存储过程中写:return 1;那么会返回1的请问return1;如何加上
      

  4.   


    把存储过程改一下把:ALTER PROCEDURE [dbo].[userLogin]
    @username NVarchar(50) ,@password NVarchar(150)
    AS if exists(SELECT 1 from users where Username=@username and Password=@password)
       return 1;  --验证登陆
    else 
       return 0;  --验证失败
    go
      

  5.   


    把存储过程改一下把:ALTER PROCEDURE [dbo].[userLogin]
    @username NVarchar(50) ,@password NVarchar(150)
    AS if exists(SELECT 1 from users where Username=@username and Password=@password)
       return 1;  --验证登陆
    else 
       return 0;  --验证失败
    gook  谢谢了