假设您有一个常见的查询,您可以在SQL中一遍又一遍地复制和粘贴。让我们假设为了简单起见,只返回总记录和与WHERE条件匹配的记录。
SELECT COUNT(*) TheseMatch,
(SELECT COUNT(*) FROM [MyTable]) ThisIsMyTotal
FROM [MyTable]
WHERE MyCondition = 'MyCondition'
通过脚本的其余部分,唯一改变的是WHERE子句。所以你的下一个查询可能是:
SELECT COUNT(*) TheseMatch,
(SELECT COUNT(*) FROM [MyTable]) ThisIsMyTotal
FROM [MyTable]
WHERE MyCondition = 'MyCondition' OR MyCondition = 'MyCondition1'
两者之间存在很多共性,唯一的区别就是WHERE。在SQL中是否有一种方法可以将前三行抽象为静态方法,这种方法通常可以调用以引入某种程度的重用,也许可以将WHERE作为参数传递?
TIA!
答案 0 :(得分:3)
我会在这里使用表值参数,因为你必须支持多个条件。基本上你需要定义你的表类型,然后你可以像处理存储过程中的任何其他表一样对待它。
您可以在此处阅读更多详细信息和实现语法。 http://msdn.microsoft.com/en-us/library/bb675163%28v=vs.110%29.aspx