我有一个接受表值参数的存储过程。表值参数 - 存储过程的记录顺序
我从我的C#DAL传递一个Datatable。 TVP保证在调用存储过程时保留行的顺序。我的猜测是它应该是(在这种情况下,这是一个愚蠢的问题)。但我只是想死一回事。
感谢
维卡斯
我有一个接受表值参数的存储过程。表值参数 - 存储过程的记录顺序
我从我的C#DAL传递一个Datatable。 TVP保证在调用存储过程时保留行的顺序。我的猜测是它应该是(在这种情况下,这是一个愚蠢的问题)。但我只是想死一回事。
感谢
维卡斯
顺序应予以保留。
从MSDN:
表值参数提供更多的灵活性,并在某些情况下比 临时表或其他方式更好的性能来传递参数列表 。表值参数提供以下好处:
- 不要为来自客户端的初始数据填充锁。
- 提供一个简单的编程模型。
- 使您能够在单个例程中包含复杂的业务逻辑。
- 减少往返服务器的次数。
- 可以有不同基数的表结构。
- 是强类型。
- 使客户端能够指定排序顺序和唯一键。
很酷,我会检查一下。看起来像它正是我需要的。谢谢。 :) – Vikas
我阅读文档以声明_client_指定排序顺序,因此服务器不会更改它。 –
我不确定“是否允许客户端指定排序顺序”意味着它保留了值的顺序。也许它只是意味着你可以指定它,f.e.通过向类型添加排序列,提供它并按该列进行排序。其实我也需要知道订单是否有保证。 –
你想的_caller_确定的顺序还是你打算_require_订单?如果是后者,那么你可以直接订购TVP。订单为什么重要? –
让我澄清; C#代码和TVP的sproc之间已经有了一个接口,允许发送记录列表。在特定情况下,我只需要发送2条记录(截至目前只有2条;进一步可能更多),但需要注意2条记录应该按顺序保存。我希望重新使用此接口 - 因此,当使用TVP调用存储过程时,要确保该订单不会被混淆。 – Vikas
你不能只在你的TVP中有两列,哪一个是你的序列? –