Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在MSSQL 2005中将整个数据集传递给存储过程_Asp.net_Sql_Sql Server 2005_Tsql_Stored Procedures - Fatal编程技术网

Asp.net 在MSSQL 2005中将整个数据集传递给存储过程

Asp.net 在MSSQL 2005中将整个数据集传递给存储过程,asp.net,sql,sql-server-2005,tsql,stored-procedures,Asp.net,Sql,Sql Server 2005,Tsql,Stored Procedures,如何将dataset对象传递给存储过程?数据集由多个表组成,我需要能够从SQL中访问它们。看来您可以使用SQL Server 2008或更高版本(至少使用DataTable)来实现这一点。以下是链接: 您可以使用表值参数在SQL 2008中传递单个表 或 请参阅本文,并使用SQL CLR过程将数据集作为来自MusiGenesis的答案状态传递 在SQLServer2005及更早版本中,它是 无法传递表变量 作为存储过程的参数。 将多行数据转换为SQL时 服务器需要发送多行数据 数据传输到SQL

如何将dataset对象传递给存储过程?数据集由多个表组成,我需要能够从SQL中访问它们。

看来您可以使用SQL Server 2008或更高版本(至少使用DataTable)来实现这一点。以下是链接:


您可以使用表值参数在SQL 2008中传递单个表

请参阅本文,并使用SQL CLR过程将数据集作为来自MusiGenesis的答案状态传递

在SQLServer2005及更早版本中,它是 无法传递表变量 作为存储过程的参数。 将多行数据转换为SQL时 服务器需要发送多行数据 数据传输到SQL Server,开发人员也可以 必须一次发送一行或来 与其他解决方案一起满足 要求。而VB.Net开发人员 最近通知我有一个 SQLBulkCopy对象在.Net中可用 将多行数据发送到SQL的步骤 服务器一次,数据仍然无法读取 被传递到存储的进程

这里有另外两种方法可能会很明显地说明这一点

将处理过程参数化

如果确实需要传递通用表变量,则可以重新计算。虽然有时这是不可避免的,但这是后来添加到MS SQL Server所具有的一组功能中的原因之一,因为通常您可以通过构建存储过程和数据处理流程来绕过它

如果您能够“参数化”您的过程,那么您应该能够让存储过程基于有限数量的参数检索完整的数据集

这会降低流程的灵活性,但也会使其更易于控制,这不是一件坏事(与仅在存储过程级别与应用程序接口的数据库类似,这种方法更为健壮,通过限制灵活性,还可以减少可能的案例数量,从而减少可能未处理的案例数量。阅读:安全漏洞和一般错误)

临时表格

除上述方法外,还有临时表的方法,根据您对数据的共享范围,临时表可能或多或少复杂(共享可以在db用户、应用程序用户、连接、进程等之间进行)


很好的副作用是,这种方法将允许进程的持久性(这使您更接近于拥有撤消、重做和继续中断工作的能力)。

SQL Server 2005还有希望吗?您可以通过将数据集序列化为XML(使用其
WriteXml
方法)来解决这个问题然后将XML作为字符串参数传入。这意味着您必须在存储过程中进行XML处理。