我有用户可以搜索可选参数的用户界面。我正在编写一个SP,并作为测试数据库使用AdventureWorks。需要帮助建立一个与SQL Server 2008中的日期之间的动态查询
对于一些原因,我似乎没有找到一个方法如何包括
凡ModifiedDate '' '+ @Fromdate + ''' 和 '' '+ @ToDate + '''')之间
在我现有的SP中。你能帮忙吗?
我的SP看起来像这样
ALTER PROCEDURE SearchPerson_Dynamic
(
@FirstName NVARCHAR(50) = NULL,
@LastName NVARCHAR(50) = NULL,
@EmailAddress NVARCHAR(50) = NULL,
@Phone NVARCHAR(25) = NULL,
@FromDate DATETIME =NULL,
@ToDate DATETIME =NULL
AS
DECLARE @sSQL NVARCHAR(MAX), @Where NVARCHAR(1000) = ''
SET @sSQL = 'SELECT * FROM [Person].[Contact]'
IF @FirstName is not null
SET @Where = @Where + 'AND FirstName = @_FirstName '
IF @LastName is not null
SET @Where = @Where + 'AND LastName = @_LastName '
IF @EmailAddress IS NOT NULL
SET @Where = @Where + 'AND EmailAddress = @_EmailAddress '
IF @Phone IS NOT NULL
SET @Where = @Where + 'AND Phone = @_Phone '
-- NEED TO INTEGRATE A SEARCH BETWEEN @FromDate and @ToDate
IF LEN(@Where) > 0
SET @sSQL = @sSQL + 'WHERE ' + RIGHT(@Where, LEN(@Where)-3)
EXEC sp_executesql @sSQL,
N'@_FirstName VARCHAR(50),
@_LastName VARCHAR(50),
@_EmailAddress VARCHAR(50),
@_Phone NVARCHAR(25)',
@_FirstName = @FirstName,
@_LastName = @LastName,
@_EmailAddress = EmailAddress,
@_Phone = @Phone
MISSING @FROMDate and @ToDate --HOW DO i DO IT HERE
有一件事我还没有做的是,一些领域EG姓,用户可以从下拉UI“ALL”选择。我如何在没有确切参数的情况下执行搜索?再次
感谢您的帮助
总是值得一读厄兰Sommarskog的动态搜索的文章,如果你还没有前:HTTP:/ /www.sommarskog.se/dyn-search.html。另外,您遇到的问题是将@FromDate和@ToDate添加到搜索中? – 2010-11-10 07:51:59
感谢您的回复。是否正确如果@FromDate不为null且@ToDate不为null设置where = @其中'''+ @Fromdate +'''和'''+ @ToDate +'''''之间的+'ModifiedDate' 另外在executeSql中,我只需添加@ _FromDate = @ FromDate,@ _ ToDate = @ ToDate – user9969 2010-11-10 08:49:37