gpt4 book ai didi

sql - 在日期之间进行选择的存储过程?

转载 作者:行者123 更新时间:2023-12-04 02:17:02 24 4
gpt4 key购买 nike

我正在编写一个存储过程来选择信息,我希望它只在日期之间进行选择?

这是现在的样子:

ALTER PROCEDURE [dbo].[AutoCompleate] 
@DateFrom datetime,
@DateTo datetime,
@SearchField varchar(50)
AS

-- V1.0 : ShaunM : 15 jun 2012
-- AutoComplete textbox

exec ('
SELECT DISTINCT ' +
@SearchField + ' FROM SchemaAudit
ORDER BY ' + @SearchField +' ASC')

我希望在@DateTo 和 DateFrom 之间运行选择以进入数据库,有人知道该怎么做吗?

最佳答案

您应该使用 sp_executesql 而不是 exec这允许使用参数,避免了 Sql 注入(inject)的风险,并避免了日期作为字符串传递的潜在问题。第一个参数是查询,第二个是参数列表及其类型,其余是参数值。

alter PROCEDURE [dbo].[AutoCompleate] 
@DateFrom datetime,
@DateTo datetime,
@SearchField varchar(50)
AS

-- V1.0 : ShaunM : 15 jun 2012
-- AutoComplete textbox

declare @sql nvarchar(max)
set @sql = 'SELECT DISTINCT '
+ quotename(@SearchField)
+ ' FROM SchemaAudit'
+ ' WHERE [Date] between @from AND @to ORDER BY '
+ quotename(@SearchField)
+ ' ASC'

exec sp_executesql @sql,
N'@from datetime, @to datetime',
@from = @DateFrom, @to = @DateTo

现在,关于开始日期和结束日期,您到底想做什么?

关于sql - 在日期之间进行选择的存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11050198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com