2016-12-30 52 views
0

我有一个表与用户的细节,如 ID FNAME LNAME 作用 分支 电子邮件 密码用于登录应用程序存储过程

我的登录验证这需要的email值的存储过程和password,验证并发送成功消息。 验证正在工作。我也需要获取fname, lname, rolebranch的值。

下面是代码:

USE [Project] 
GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER Procedure [dbo].[usp_loginuser] 
(@Email varchar(100), 
@password varchar(100) 
) 
AS 
BEGIN 
DECLARE @msg nvarchar(2048) 
SET NOCOUNT ON 
--select * from dbo.userdetails where [email protected] and [email protected] 

    BEGIN TRY 

     Declare @flag bit 
     SET @flag = 0 

     IF EXISTS(Select * from userdetails 
     where ltrim(rtrim(email)) = ltrim(rtrim(@Email)) AND ltrim(rtrim(pwd)) = ltrim(rtrim(@password)) 
     AND isactive = 1) 
     BEGIN 
     SET @flag =1; 
     END 

     ELSE 
     BEGIN 
     SET @flag =0; 
     END 

     SELECT @flag [IsSuccess] 


    END TRY 
    BEGIN CATCH 
      SET @msg = error_message() 
     RAISERROR (@msg, 16, 1) 
    END CATCH 

SET NOCOUNT OFF 
END 
+0

获取值输出?你能分享你所期望的输出格式吗? –

+0

获取该特定登录名的fname,lname,分支和角色的值。因为这些细节将在我登录后的下一页中需要。 – beginner

+0

在结束之前选择fname,lname,从userdetails分支 –

回答

1

下面是代码

ALTER Procedure [dbo].[usp_loginuser] 
    (@Email varchar(100), 
    @password varchar(100), 
    @fname varchar(100) output, 
    @lname varchar(100) output 
) 
AS 
BEGIN 
DECLARE @msg nvarchar(2048) 
SET NOCOUNT ON 
    BEGIN TRY 

     Declare @flag bit 
     SET @flag = 0 

     IF EXISTS(Select @fname = fname, @lname = lname from userdetails 
     where ltrim(rtrim(email)) = ltrim(rtrim(@Email)) AND ltrim(rtrim(pwd)) = ltrim(rtrim(@password)) 
     AND isactive = 1) 
     BEGIN 
      SET @flag =1; 
     END 

     ELSE 
     BEGIN 
      SET @flag =0; 
     END 

     SELECT @flag [IsSuccess], @fname, @lname 


    END TRY 
    BEGIN CATCH 
      SET @msg = error_message() 
     RAISERROR (@msg, 16, 1) 
    END CATCH 

SET NOCOUNT OFF 
END 
+0

您必须在“ALTER Procedure”语句中声明输出变量,并在select查询中赋值if语句中的值,并返回相同的变量。 –

0
BEGIN TRY 

     Declare @flag bit 
     SET @flag = 0 

     IF EXISTS(Select * from userdetails 
     where ltrim(rtrim(email)) = ltrim(rtrim(@Email)) AND ltrim(rtrim(pwd)) = ltrim(rtrim(@password)) 
     AND isactive = 1) 
     BEGIN 
     SET @flag =1; 
     END 

     ELSE 
     BEGIN 
     SET @flag =0; 
     END 

     SELECT fname, lname, role, branch from userdetails 
     where ltrim(rtrim(email)) = ltrim(rtrim(@Email)) AND ltrim(rtrim(pwd)) = ltrim(rtrim(@password)) 

    END TRY 

如果你得到一个空的数据集,它是一个失败其他成功

+0

当我尝试这个我得到一个错误 – beginner

+0

必须声明标量变量“@Email”。 – beginner

+0

如果你在最后删除了select语句,你会得到错误吗? –