首页 > 解决方案 > 无法使用存储过程获得确切的结果,因为它返回带有增量的值

问题描述

ALTER PROCEDURE Searching
    (@EmployeeName varchar(50))    
AS
BEGIN
    SELECT
        EmployeeDetails.EmployeeId, EmployeeName, Mobile, Email, 
        Gender, Married, JoiningDate, DOB, ReportingManager, 
        ISActive, ISDelete, EmployeeRoles.RoleId, 
        employeeDepartment.Department
    FROM
        EmployeeDetails, EmployeeRoles, employeeDepartment
    WHERE
        EmployeeDetails.EmployeeName LIKE '%' + @EmployeeName + '%'
END

这是我的存储过程,但是当我执行它时,我得到的结果如下:

exec Searching 'Rizwan'

我在执行存储过程时得到的结果

所以请帮我解决这个问题

标签: c#sqlsql-serverado.net

解决方案


现在你有不受限制的连接。如果没有看到架构,我无法告诉您您的联接应该是什么,但我们可以推测大致如下:

Alter procedure Searching
(
    @EmployeeName varchar(50)
)    
as 
begin    
    select EmployeeDetails.EmployeeId, EmployeeName, Mobile, Email, Gender, Married, JoiningDate, DOB, ReportingManager, ISActive, ISDelete, e.RoleId, ed.Department
    from EmployeeDetails e
    inner join EmployeeRoles er on er.Id = e.RoleId
    inner join employeeDepartment ed on ed.Id = e.DepartmentId
    where e.EmployeeName LIKE '%' + @EmployeeName + '%'
end

此外,作为一个广泛的不相关提示:使用varchar人名通常是一个坏主意 - 将其限制为 50 个字符。名字很重要;我建议让它更像nvarchar(200)列和参数。


推荐阅读