0

Users次の列を持つテーブルがあります。

  Userid   Username    Password
     1     Username1   Password1
     2     Username2   Password2
     3     Username3   Password3

別のテーブルがありますMappingRoles:

 Userid   RoleId
     1       1 (FinanceUser)
     1       2 (Agent)
     1       3 (Client)

2 つの列を返すストアド プロシージャを書きたい

IsValidUser
Roles -- of the user

これは私の試みです:

CREATE PROCEDURE  getRoles
    @Username varchar(50), 
    @Password varchar(50) 
AS
BEGIN
    Select * from Users as x inner join MappingRoles as y 
    on x.Userid=y.Userid 
    where x.Userid=(Select Userid from Users 
      where UserName='Username1' and Password='Password1');
END
GO

このクエリの最適化により、2 つの戻り値が提供されることを期待しています。

  • IsUserAuthenticated- (内側SelectからUsers)

  • 存在する場合は、すべての値。

どんな提案でも大歓迎です。

4

1 に答える 1

1

より単純な結合を試して、サブクエリを削除してください:

CREATE PROCEDURE  getRoles
    @Username varchar(50), 
    @Password varchar(50) 
AS
BEGIN
    Select 
        * 
    from Users as us 
    inner join MappingRoles mr 
    on us.Userid=mr.Userid 
    where us.UserName=@username and us.Password=@password);
END
GO
于 2013-06-02T19:52:16.673 に答える