多值存储过程参数只是不好的做法吗?

时间:2010-07-20 02:04:04

标签: stored-procedures parameters multivalue

我很奇怪厌恶将多个ID参数传递给单个存储过程。例如,这感觉错了:

GetMyObject(ListofIDs,OtherParam1,OtherParam2,...)

我明白如何做(如果必须的话,请正确)..但我不觉得我应该这样做。我觉得它违背了“获取项目”存储过程/子例程的目的。我觉得我应该构建我的SP以支持适当的过滤器参数。如果我的呼叫者有一个ID列表,他们不应该多次调用sp吗?

帮助?

1 个答案:

答案 0 :(得分:0)

“按ID获取项目”例程永远不应该返回多个对象,因为这绝对没有语言意义。

“按ID获取项目”例程?当然,如果你有一个不错的用例,它会被经常使用。

但是大部分时间,是的,而不是按ID返回多个项目的例程,您需要一个根据应用​​程序适当的过滤参数返回项目的例程(例如“给我1月8日的所有交易超过10美元” )。

顺便说一句,有时一系列ID(例如5到10之间的所有ID)都是完全有效的过滤器集!

顺便说一句,这不一定只是MySQL或SQL-in-general问题。在任何语言中查询API的几乎任何类型的数据集都将呈现这些相同的设计问题,并且它们的答案通常非常相似。