请教一个入门级的存储过程问题

时间:2022-04-08 00:28:06
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER PROCEDURE [dbo].[sp_Accounts_ValidateLogin]
@username varchar(50),
@password varchar(50)
AS
DECLARE @myid INT
SELECT  @myid =  Id
FROM  dbo.admin 
WHERE username = @username   and password = @Password 
   
IF @myid != NULL   
RETURN  @myid
ELSE
RETURN -1

      
      







这一段简单存储过程查询数据库admin表里username和password为'123'的Id,表中是存在值的,昨天执行还好好的返回3,今天就一直是返回-1,求大神指点哪里的问题 请教一个入门级的存储过程问题再一个,我在C#程序中想要获取存储过程返回的结果集(dataset)而不是return value该怎么写呢?

5 个解决方案

#1


结果集的话
ALTER PROCEDURE [dbo].[sp_Accounts_ValidateLogin]
@username varchar(50),
@password varchar(50)
AS
DECLARE @myid INT
SELECT  @myid =  Id
FROM  dbo.admin 
WHERE username = @username   and password = @Password 
    
SELECT ISNULL(@myid,-1) [myid]


昨天执行还好好的返回3,今天就一直是返回-1
既然昨天可以正常的话,可以再检查一遍数据

#2


1)细心检查调用的存储过程,确认该用户正确。
2)要在程序中返回dataset,只要使用多个select即可,如:

select * from A  --返回表1,dataset.Tables[0]
select * from B  --返回表2,dataset.Tables[1]

#3


@username varchar(50),
@password varchar(50)
AS 
DECLARE @myid INT
SELECT   @myid = Id
FROM  dbo.admin 
WHERE username = @username   and password = @Password 
 rreturn @myid



现在情况是这样,如果没有哪个if。。else判断就是正常返回@myid,加了判断就直接null了。。。。

#4


引用 3 楼 u011114896 的回复:
@username varchar(50),
@password varchar(50)
AS 
DECLARE @myid INT
SELECT   @myid = Id
FROM  dbo.admin 
WHERE username = @username   and password = @Password 
 rreturn @myid



现在情况是这样,如果没有哪个if。。else判断就是正常返回@myid,加了判断就直接null了。。。。 


 
IF @myid  is not  NULL   
RETURN  @myid
ELSE
RETURN -1 

#5


问题搞定,改为is not null 就好了,楼上刚好也给出答案,结贴! 请教一个入门级的存储过程问题

#1


结果集的话
ALTER PROCEDURE [dbo].[sp_Accounts_ValidateLogin]
@username varchar(50),
@password varchar(50)
AS
DECLARE @myid INT
SELECT  @myid =  Id
FROM  dbo.admin 
WHERE username = @username   and password = @Password 
    
SELECT ISNULL(@myid,-1) [myid]


昨天执行还好好的返回3,今天就一直是返回-1
既然昨天可以正常的话,可以再检查一遍数据

#2


1)细心检查调用的存储过程,确认该用户正确。
2)要在程序中返回dataset,只要使用多个select即可,如:

select * from A  --返回表1,dataset.Tables[0]
select * from B  --返回表2,dataset.Tables[1]

#3


@username varchar(50),
@password varchar(50)
AS 
DECLARE @myid INT
SELECT   @myid = Id
FROM  dbo.admin 
WHERE username = @username   and password = @Password 
 rreturn @myid



现在情况是这样,如果没有哪个if。。else判断就是正常返回@myid,加了判断就直接null了。。。。

#4


引用 3 楼 u011114896 的回复:
@username varchar(50),
@password varchar(50)
AS 
DECLARE @myid INT
SELECT   @myid = Id
FROM  dbo.admin 
WHERE username = @username   and password = @Password 
 rreturn @myid



现在情况是这样,如果没有哪个if。。else判断就是正常返回@myid,加了判断就直接null了。。。。 


 
IF @myid  is not  NULL   
RETURN  @myid
ELSE
RETURN -1 

#5


问题搞定,改为is not null 就好了,楼上刚好也给出答案,结贴! 请教一个入门级的存储过程问题