【问题标题】:Advanced Optional Parameter Searching using stored procedure in SQL使用 SQL 中的存储过程进行高级可选参数搜索
【发布时间】:2015-06-10 07:36:35
【问题描述】:

我正在开发 HRM Web 应用程序。现在我必须在此应用程序中制作出勤报告。 为此,我们有一个高级搜索报告表单,我们有一个 EmployeeId、DateFrom 和 DateTo 字段来搜索日期明智的报告。 我想使用存储过程来搜索考勤报告。

我面临的employeeId、DateFrom 和DateTo 的问题不是compalsary。但是我们必须用给定的输入来搜索 可能只有employeeId,也可能有employeeId和DateFrom,有的可能是employeeId、DateFrom、DateTo

当请求到达存储过程时,当任何参数不存在时,我必须解决空值 希望你了解我的情况...谁能帮帮我...

【问题讨论】:

    标签: sql-server-2008 stored-procedures


    【解决方案1】:
    CREATE PROCEDURE [dbo].[USP_Employees_Search]
         @EmployeeId            Int = Null
        ,@FromDate              Date = Null
        ,@ToDate                Date = Null
    AS
    BEGIN
    
        Set Nocount On;
    
        Select  *
        From    dbo.Employees As e With (Nolock)
        Where   (Isnull(@EmployeeId,0) = 0 Or e.EmployeeId = @EmployeeId)
                And (@FromDate Is Null Or e.[someDateAttribute] >= @FromDate)
                And (@ToDate Is Null Or e.[someDateAttribute] <= @Todate)
    
    END
    GO
    

    【讨论】:

    • 这正是我所期待的......谢谢你先生......这里......如果我们不给 DateTo 参数赋值,它将获得从 DateFrom 开始的整个数据......是否有任何仅在当天获取报告的方式
    • 需要使用像 @IsSameDay Varchar(1) 这样的标志,如果值传递为 'y',则将 dateFrom 分配给 dateTo 并且仅适用于上述相同查询的那一天
    • 我想要一个建议..在上面的问题表中,'Punchin' 和 'PuchOut' 列是 varchar,我的代码如下:employeeId int=null, datefrom varchar=null, dateto varchar=null 我可以可能的这种操作 where(isnull(employeeId,0)=0 or ejd.recordId=employeeId) and (datefrom is null or ad.punchin >= datefrom) and (dateto is null or ad.punchout
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 2010-12-21
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多