日期:2014-05-17  浏览次数:20698 次

师傅您在哪里【求助】
我创建了一个用户登录表,然后新建了一个登录验证的储存过程:
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,那么我用户登录便一直等录失败。
请问这是哪里做错了,该怎样解决啊 大婶门@CSharper
SQL2008,储存过程

------解决方案--------------------
引用:
Quote: 引用:

举个例子,下面执行的是系统的存储过程,执行后,返回0,表示正常执行:



declare @i int

exec @i = sp_who

select @i 
/*
0
*/
为什么总是提示登录失败,数据库那些都是连好的,而且做过了测试。好像是储存过程这写错了


把存储过程改一下把:



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