我在powershell(1.0)中有一个返回DataSet的SQL语句。现在我在一个循环中运行这个SQL语句,迭代一个参数。我想将从我的函数Exec-SQL-Query返回的DataSet追加到之前调用的现有DataSet中...我该怎么做?我尝试使用DataTables和DataSet做一些事情,但没有用。
foreach ($id in $idList)
{
$Parameters.Add($parameterKey,"$id")
$dataSet = Exec-SQL-Query -SqlCmd $sqlCmd -Parameter $Parameters -SqlConn $conn
# I would like to do something like:
#$dataSet.Add($dataSet.Tables[0])
$Parameters = @{}
$i++
}
函数Exec-Sql-Query工作正常,已经过测试。
答案 0 :(得分:0)
在我看来,您只是尝试将返回的数据集中的表附加到原始数据集中。这不会起作用,因为每次调用数据库时都会消除$ dataset。
相反,在循环外部声明一个空数据集,然后将返回的表添加到其中。
$myDataSet = New-Object System.Data.Dataset
foreach ($id in $idList)
{
$Parameters.Add($parameterKey,"$id")
$dataSet = Exec-SQL-Query -SqlCmd $sqlCmd -Parameter $Parameters -SqlConn $conn
# Now add the returned table to $myDataSet:
$myDataSet.Tables.Add($dataSet.Tables[0])
$Parameters = @{}
$i++
}
这将导致数据集包含多个表。
我没有办法对此进行测试,但如果您决定附加到$ dataset并且$ dataset已经在其他地方实例化,那么您也可以尝试这样做:
$dataset.Tables.Add((Exec-SQL-Query -SqlCmd $sqlCmd -Parameter $Parameters -SqlConn $conn).Tables[0])
我很想知道这是否有效。让我知道。