【发布时间】:2019-07-23 06:01:19
【问题描述】:
我想知道是否有任何聪明的解决方案可以将整个 SQL 语句作为参数发送到已经保存日期参数的存储过程。
见下文。
CREATE procedure sp_GetDataByDate
@startdate datetime,
@enddate datetime,
@sqlStatement varchar(max)
as
begin
-- Here I want my SELECT-anything-somehow-statement
@sqlStatement
WHERE dbo.DummyDataTable.CreatedDT BETWEEN @startdate AND @enddate
end
一种解决方案,您首先使用 SQL 语句并使用该数据创建一个临时表,以便稍后使用日期参数过滤出您想要的内容,但它可能会很重,因为该数据库中有很多数据.
谢谢
【问题讨论】:
-
你最好不要这样做。这将为您的安全性带来一个巨大的漏洞,并为 SQL 注入敞开大门。
-
是的。我愿意接受其他解决方案来解决这个问题。
-
你想达到什么目标?是从不同的表中选择还是从不同的表中选择不同的列?听起来像是XY-problem
-
阅读一下@Denis 所说的内容:安全风险。 red-gate.com/hub/product-learning/sql-prompt/…
-
绝对是 XY 问题。你在这里尝试解决的“真正的”问题是什么?
标签: sql-server tsql stored-procedures dynamic-sql