Ich versuche eine gespeicherte Prozedur zu erstellen, die Mitarbeiter von der Tabelle Mitarbeiter sucht.SQL-Suchabfrage zeigt kein korrektes Ergebnis an
Meine Abfrage sieht wie folgt aus
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
Das Verfahren erfolgreich kompiliert wird. aber wenn Sie es wie
exec EmployeeList 1,10,'shaili','',null
ausführen, zeigt es andere Aufzeichnungen auch an. Kann das jemand erklären? Ich möchte nur den Datensatz mit dem angegebenen Namen.
Ergebnis bekam ich:
In der Nähe, wo gerade erst von First zu finden versuchen. – Lasith
Entfernen Sie "%". Der Proc gibt dir alle Namen, die hier 'sh' enthalten. – Sami
@Lasith Hat das gemacht, indem sie zwei andere Zeilen kommentiert hat. Ich suchte mit dem Namen VIKAS und zeigt immer noch alle drei Ergebnisse. Fehle ich etwas Logik? –