2013-10-24 66 views
1

我有一个接受表值参数的存储过程。表值参数 - 存储过程的记录顺序

我从我的C#DAL传递一个Datatable。 TVP保证在调用存储过程时保留行的顺序。我的猜测是它应该是(在这种情况下,这是一个愚蠢的问题)。但我只是想死一回事。

感谢

维卡斯

+0

你想的_caller_确定的顺序还是你打算_require_订单?如果是后者,那么你可以直接订购TVP。订单为什么重要? –

+0

让我澄清; C#代码和TVP的sproc之间已经有了一个接口,允许发送记录列表。在特定情况下,我只需要发送2条记录(截至目前只有2条;进一步可能更多),但需要注意2条记录应该按顺序保存。我希望重新使用此接口 - 因此,当使用TVP调用存储过程时,要确保该订单不会被混淆。 – Vikas

+0

你不能只在你的TVP中有两列,哪一个是你的序列? –

回答

1

顺序应予以保留。

MSDN

表值参数提供更多的灵活性,并在某些情况下比 临时表或其他方式更好的性能来传递参数列表 。表值参数提供以下好处:

  • 不要为来自客户端的初始数据填充锁。
  • 提供一个简单的编程模型。
  • 使您能够在单个例程中包含复杂的业务逻辑。
  • 减少往返服务器的次数。
  • 可以有不同基数的表结构。
  • 是强类型。
  • 使客户端能够指定排序顺序和唯一键。
+0

很酷,我会检查一下。看起来像它正是我需要的。谢谢。 :) – Vikas

+0

我阅读文档以声明_client_指定排序顺序,因此服务器不会更改它。 –

+0

我不确定“是否允许客户端指定排序顺序”意味着它保留了值的顺序。也许它只是意味着你可以指定它,f.e.通过向类型添加排序列,提供它并按该列进行排序。其实我也需要知道订单是否有保证。 –