将表值参数传递给SQL CLR存储过程的价值是什么?
问题描述:
我有一个存储过程来写我只需要两个属性的字段。最有可能的是,它一次只能在一个,也许两个或三个领域工作。它也应该是一个CLR存储过程。将表值参数传递给SQL CLR存储过程的价值是什么?
作为SQL的初学者,在我看来,传递一个表值参数是矫枉过正的,但是由于这是为了工作,而且是一个相对较大的公司,我想知道是否还有其他考虑因素需要制定?与正常值相比,使用表值参数的值究竟是多少。
答
我没有看到在你的问题中列出CLR的必要性,但TVP有明确的用途。
我已经看到逗号分隔列表被传递到SQL存储过程,TVP可以在那里用于更好的类型检查和结构。
它还有助于提高企业级的稳健性;我研究了一些在1小时内尝试150万次插入的东西。用个别插入(一个接受一堆标量参数的过程)来做到这一点是资源密集型的,非常非常缓慢;当转换为使用表值参数执行批量插入操作时,操作约在1/5时间内完成。