Sql server 在SQL Server中创建一个过程,用于确认用户是否插入collect密码和用户名
这就是我想到的:Sql server 在SQL Server中创建一个过程,用于确认用户是否插入collect密码和用户名,sql-server,stored-procedures,Sql Server,Stored Procedures,这就是我想到的: Create table Users ( UserName varchar(35) not null, Password varchar(35) not null, UserId int Foreign key references UserDetails (UserId) ) 以下是确认用户名和密码是否正确的过程: CREATE PROCEDURE sp_Login @Username varchar(35), @Passwor
Create table Users
(
UserName varchar(35) not null,
Password varchar(35) not null,
UserId int Foreign key references UserDetails (UserId)
)
以下是确认用户名和密码是否正确的过程:
CREATE PROCEDURE sp_Login
@Username varchar(35),
@Password varchar(35)
AS
BEGIN
SELECT @Username = Username
FROM Users
WHERE Username = @Username;
SELECT @Password = Password
FROM Users
WHERE Password = @Password;
考虑更改您的过程名称。sp_uu前缀用于内置过程
CREATE PROCEDURE sp_Login
@Username varchar(35),
@Password varchar(35)
AS
BEGIN
IF EXISTS(SELECT 1
FROM Users
WHERE Username=@Username AND Password=@Password)
SELECT 'SUCCESS' AS RESULT
ELSE
SELECT 'FAILURE' AS RESULT
END
试试这个:-
IF OBJECT_ID(N'[dbo].[sp_Login]', N'P') IS NOT NULL DROP PROCEDURE [dbo]. [sp_Login]
GO
SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
CREATE PROCEDURE [dbo].[sp_Login]
@Username varchar(35),
@Password varchar(35),
@Userid int
AS
IF EXISTS (SELECT 'exists' from Users where UserName = @Username AND Password = @Password AND UserId <> @Userid)
BEGIN
RETURN TRUE;
END
ELSE
BEGIN
RETURN FALSE;
END
旁注::命名过程时避免使用sp_uu前缀。SQL Server使用此前缀来指定系统过程。当两列都属于同一个表时,为什么要使用单独的语句?您的目标是什么?另外:请永远不要以明文形式存储密码!密码应始终经过盐渍+哈希处理才能存储!如果这回答了您的问题,请将其标记为答案。它会帮助别人。