【发布时间】:2017-06-16 20:41:18
【问题描述】:
我有一些 SQL 正在通过盲目需求/请求转换为存储过程。我正在查看的应用程序中有一些 SQL 使用动态 IN(set)语句构建 where 子句。我已经搜索了动态存储过程,但没有找到接近我正在寻找的东西。这是 WHERE 子句的示例:
WHERE Var.A = @Param AND Var.Id IN
从这里开始,使用字符串构建器手动构建 SQL,然后执行。不知道如何将其转换为存储过程,因为我对它们还很陌生。
我们正在使用 C# 和 SQL Server
【问题讨论】:
-
如何将用户定义的表类型从 C# 发送到 proc?
-
听起来不错。但我不知道那是什么意思。我会研究这个角度。谢谢大声笑
-
@Matt1776:根据各种因素,IN 子句可以是从良性到病态的不良重新性能。由于 IN 子句的要点是过滤返回的行,这也是 INNER JOIN 子句(除了引入额外的列之外),执行 INNER JOIN 而不是 IN 总是足够而且通常更好。 (回想一下:INNER JOIN 只返回 BOTH 表中具有匹配连接字段的行。)
-
@PieterGeerkens 我喜欢你的想法——但是由于 SQL 不是我的主要专长——我将如何使用内部连接来指定值列表?查询正在查找 ID 等于动态 ID 列表的位置。没有其他方法可以指定所需的结果 afaik
标签: c# sql sql-server stored-procedures sql-server-2012