0

我在 powershell (1.0) 中有一个返回数据集的 SQL 语句。现在我在一个循环中运行这个 SQL 语句并迭代一个参数。我想将从我的函数 Exec-SQL-Query 返回的数据集附加到先前调用的现有数据集......我该怎么做?我尝试使用 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 工作正常,已经测试过了。

4

1 回答 1

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])

我很想知道这是否有效。让我知道。

于 2013-10-30T00:15:32.187 回答