2016-09-12 13 views
2

テーブルの従業員から従業員を検索するストアドプロシージャを作成しようとしています。SQL検索クエリで正しい結果が表示されない

私のクエリは、プロシージャが正常にコンパイルされ、この

ALTER PROCEDURE [dbo].[EmployeeList] 
    @CurrentPageNo INT = null, 
    @PageSize INT = 5, 
    @FirstName VARCHAR(100), 
    @Email VARCHAR(100), 
    @DeptId int = null 
AS 
BEGIN 
    DECLARE @StartRecordNo INT, @EndRecordNo INT 

    IF @CurrentPageNo IS NULL 
     SET @CurrentPageNo = 1 

    SET @StartRecordNo = ((@CurrentPageNo - 1) * @PageSize) 
    SET @EndRecordNo = @StartRecordNo + @PageSize 

    SELECT 
     ROW_NUMBER() OVER (ORDER BY CreatedByDate desc) As srno, 
     EmployeeID, FirstName, LastName, Email, DateOfBirth, Joining, 
     MobileNumber, MonthsOfExperience, TotalExperience, DepartmentName 
    FROM 
     Employee 
    INNER JOIN 
     Department ON Employee.DeptId = Department.DepartmentID 
    WHERE 
     (ISNULL(@FirstName, '') = '' OR Employee.FirstName LIKE '%' + FirstName + '%') 
     AND 
     (ISNULL(@Email, '') = '' OR Employee.Email LIKE '%' + @Email + '%') 
     AND 
     (@DeptId IS NULL OR Employee.DeptId = @DeptId) 
END 

のように見えます。実行したときのように

exec EmployeeList 1,10,'shaili','',null 

他のレコードも表示されます。誰もこれを説明できますか?私は与えられた名前のレコードだけを欲しい。私が得た

結果:では

Executed query

+0

ちょうどのみ姓で探してみてください場所があります。 – Lasith

+0

"%"を削除してください。 procはあなたにここにshを含むすべての名前を与えます。 – Sami

+0

@Lasith他に2行コメントしました。私はVIKASという名前で検索し、まだ3つの結果すべてを表示しています。私はいくつかの論理を欠いていますか? –

答えて

2
#Siddhant only little mistake by you. i.e you pass FirstName instead of @FirstName. check below code. 

ALTER PROCEDURE [dbo].[Test_EmployeeList] 
     @CurrentPageNo INT = null, 
     @PageSize INT=5, 
     @FirstName VARCHAR(100), 
     @Email VARCHAR(100), 
     @DeptId int = null 

    AS 
    BEGIN 
    DECLARE @StartRecordNo INT,@EndRecordNo INT 

    IF @CurrentPageNo IS NULL 
     SET @CurrentPageNo=1 

    SET @StartRecordNo=((@CurrentPageNo-1) * @PageSize) 
    SET @[email protected] + @PageSize 
    SELECT ROW_NUMBER()OVER(ORDER BY Reg_Date desc) As srno, 
    F_Name, L_Name, Email, Mobile, Reg_Date from tbl_LoginMaster 
    inner join tbl_Login_Detail 
    ON tbl_LoginMaster.User_Id = tbl_Login_Detail.User_Id 


    WHERE (ISNULL(@FirstName,'')='' OR tbl_LoginMaster.F_Name LIKE '%'[email protected]+'%') AND 
     (ISNULL(@Email,'')='' OR tbl_LoginMaster.Email LIKE '%'[email protected]+'%') AND 
     (@DeptId is null OR tbl_LoginMaster.User_Id = @DeptId) 
    END 
    GO 


    exec Test_EmployeeList 1,10,'Mohit','',null 
+0

はいそれが問題を解決した。ありがとうございました:) –

+0

あなたの大歓迎です。 –

関連する問題