我正在研究SQL Server 2005。
这里我需要传递一个数组(2维,例如:Emp No,Emp Name),它具有从我的ASP.NET应用程序到存储过程的多条记录。
如果有办法可以告诉我吗?
非常感谢,
问候。
Anusha。
答案 0 :(得分:1)
概述了here
的6种不同方法我个人喜欢Nestor概述的XML方法,因为它可以处理任何维度的数组,尽管其他人可能更喜欢fn_split,传递分隔字符串并将其解压缩到表变量中以便为简单情况加入。
所有问题都在SQL2008中得到解决 - 基于集合的语言最终允许表变量作为输入参数!
答案 1 :(得分:0)
这听起来大致相当于发送一个包含两列的表:
table Employees
.No
.Name
在SQL 2008中,您可以使用表类型参数来传递此类数据,但我不相信这在Sql 05中可用。
如果您使用的是.NET,则可以使用SqlBulkCopy类发送一批记录。
如果这些都不起作用,则可能必须每行执行一个存储过程(在这种情况下为每个员工)。这假设这个数据需要在表中结束,而不是试图解析或重新格式化SQL服务器上的数据。如果是后者,则应该在客户端而不是数据库服务器上执行此类操作。
答案 2 :(得分:0)
你可以创建一个临时表,让proc 1填充它,如果你使用2005,则proc 2从中选择。在2008年你可以传递表值参数。有些人可能会说你也可以传入XML。
答案 3 :(得分:0)
2005年,我认为没有办法优雅地做到这一点。在过去,我通过将值列表作为文本字符串传递来完成此操作,例如“1,2,3”。我们有一个用户定义的函数,它拆分列表并返回一个表。只需要注意列表的长度不会超过参数长度。
答案 4 :(得分:0)
以xml格式传递数组,如:
<array>
<row>
<cell>1</cell>
<cell>2</cell>
<cell>3</cell>
</row>
<row>
<cell>4</cell>
<cell>5</cell>
<cell>6</cell>
</row>
</array>
通过xml类型的参数。 SQL 2005具有xml操作运算符,您可以在存储过程中使用它来解析数组。