我有这样的商店程序:
ALTER PROCEDURE [dbo].[CheckUser&Pass]
(
@Username nchar(15),
@Password nchar(15)
)
AS
SET NOCOUNT ON;
SELECT Username, Pass, Code_Person
FROM Login
WHERE (Username = @Username) AND (Pass = @Password)
执行:
DECLARE @return_value int
EXEC @return_value = [dbo].[CheckUser&Pass]
@Username = N'admin',
@Password = N'1234'
SELECT 'Return Value' = @return_value
GO
我想知道如果用户名为admin且密码为1234,我可以将@return_Value设置为1。
但它无法正常工作,可能吗?
答案 0 :(得分:5)
要在存储过程中设置返回值,您需要使用RETURN语句
e.g。
IF (@@ROWCOUNT > 0 AND @Username = 'admin' and password='1234')
RETURN 1
ELSE
RETURN 0
请注意,我已经准确地说明了您要求使用RETURN语句的要求。我应该指出一些问题:
答案 1 :(得分:1)
您可以更改存储过程以返回计数,假设用户名和密码是唯一的,您应该得到1或0的结果,但我认为必须有更好的方法。
ALTER PROCEDURE [dbo].[CheckUser&Pass]
(
@Username nchar(15),
@Password nchar(15)
)
AS
SET NOCOUNT ON;
SELECT Count(Username)
FROM Login
WHERE (Username = @Username) AND (Pass = @Password)
答案 2 :(得分:0)
您应该更改存储过程以返回所需的值
ALTER PROCEDURE [dbo].[CheckUser&Pass]
(
@Username nchar(15),
@Password nchar(15)
)
AS
SET NOCOUNT ON;
DECLARE @cnt INT
SELECT @cnt = COUNT(*)
FROM Login
WHERE (Username = @Username) AND (Pass = @Password)
RETURN @cnt