2013-10-29 4 views
0

저는 PowerShell (1.0)에 DataSet을 반환하는 SQL 문을 가지고 있습니다. 이제 루프에서이 SQL 문을 실행하여 매개 변수를 반복합니다. 이전 호출에서 기존 DataSet에 내 함수 Exec-SQL-Query에서 반환 된 DataSet을 추가하고 싶습니다 ... 어떻게하면됩니까? DataTables 및 DataSet을 사용하여 작업을 시도했지만 작동하지 않았습니다.Powershell - 기존 데이터 집합에 추가하기

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

반환 된 데이터 세트의 테이블을 원본 데이터 세트에 추가하려는 것처럼 보입니다. 이것은 데이터베이스에 전화 할 때마다 $ 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.Tables.Add((Exec-SQL-Query -SqlCmd $sqlCmd -Parameter $Parameters -SqlConn $conn).Tables[0]) 

을 그게 효과가 있는지 궁금해. 알려줘.

관련 문제