【发布时间】:2020-11-02 06:37:48
【问题描述】:
我的执行官:
SET @Sql = "SELECT r.Id FROM Record r where r.Price > 100"
如何查询@Sql 的结果?理想情况下是这样的:
SELECT * FROM Record r JOIN Patient p
ON r.Id = p.recordId
WHERE r.Id IN (EXEC(@Sql))
【问题讨论】:
-
您使用动态查询的实际目的是什么?
-
有很多条件 WHERE 子句。别看例子,我的真实代码大概有15-20个WHERE子句,都是有条件的
-
但这如何证明使用动态查询的合理性?您的查询真的需要动态查询吗?
-
我不知道,我不是写原始查询的人。我猜原作者想要做的是:如果 @param1 > 10,添加这个 WHERE 子句,否则不要打扰。如果我知道怎么做,我可以尝试将其转换为普通查询。我很少需要接触存储的 proc 代码,所以我对此很陌生。
-
既然您使用的是动态查询,为什么不直接使用动态sql 形成完整的查询呢?而不是使用临时表来存储中间结果以供后续查询
标签: sql sql-server tsql dynamic-sql