1
我试图将两个存储过程合并为一个。以前我有:我可以在存储过程中返回附加值以及SQL数据吗?
@argument int
SELECT val1, val2, val3
FROM table as x
INNER JOIN(
...) as y
ON x.val1 = y.val2
WHERE someCondition = @argument
然后,我会触发一个几乎相同的存储过程,其中唯一的区别是条件。
我想找到一种方法,这些方法结合起来,创造这样的事情:
@argument int
SELECT val1, val2, val3,
isCondition1 = true -- Additional return value
FROM table as x
INNER JOIN (
...) as y
ON x.val1 = y.val2
WHERE someCondition = @argument
SELECT val1, val2, val3,
isCondition1 = false -- Additional return value
FROM table as x
INNER JOIN(
...) as y
ON x.val1 = y.val2
WHERE someOtherCondition = @argument
这可能吗?
这是完全可以接受的,我将以某种身份使用它。谢谢!回答你的问题,是的。在我原来的问题中,我所要求的解决方案将返回相同数量的列。这两个查询都会返回一个布尔值。那可以吗?我可以帮你解答一下吗? – drewwyatt
如果你确实返回相同的列,那么你仍然可以使用一种技术[像这样](http://stackoverflow.com/a/3415629/314291)来组合PROC,但是,它带来了是否需要使用if/else分支并有2个单独的查询(对参数嗅探不好)或带有可选过滤器模式(对查询计划不合适)或动态sql(臭)的单个查询。另一个[这里的例子](http://stackoverflow.com/q/11329823/314291)(我假设sql-server,顺便说一句) – StuartLC