我发现存储过程中有几点我正在创建,我希望存储过程接受SP应该对其执行操作的各种表中的ID列表。我正在考虑使用表值参数。我想知道的是,创建一个只包含一个“ID int”列的单一Type是一个好习惯,并将其用作我所有TVP的数据类型,或者是否更好的做法来定义一个每个SP的类型,以防我将来想要扩展传递的值。
有没有人有这方面的经验?
编辑如果它对您的推荐产生任何影响,我传递的ID列表可能是150,000个条目的订单。
答案 0 :(得分:2)
我能以经验的方式为您提供的是,如果您发现需要更改用户定义的表类型的定义,则需要在您之前删除对该类型的每个引用能干掉它。在Cons section中提到了非常烦恼。因此对我们来说,代码维护是值得根据预期用法定义唯一表类型,即使它与现有类型匹配。 YMMV
答案 1 :(得分:1)
为什么不使用内联表值函数来拆分列表并返回一个表?如果需要多次使用它,可以只调用一次并将结果填充到本地表变量中。对我来说,当你需要从客户端应用程序到数据库中获取复杂的数组时,TVP是最有益的 - 我不确定是否值得为包含ID的单个列提供麻烦。