2017-12-05 3 views
0

OracleのPowerShellからテーブルを読み込み、ArrayListに保存しようとしています。接続は機能していますが、最初の行が読み込まれた後にその行を読み込むことはできません。Oracleテーブルから複数の行を読み取る

ここで私がやろうとしていることがあります。

$rows = New-Object System.Collections.ArrayList 
class Table { 
    [String] $name 
    [String] $type 
} 

try { 
    $oraConn.Open() 
    $sql = [string]::Format("select name, type from source_table where type = 'running'") 

    $oraCmd = New-Object System.Data.OracleClient.OracleCommand($sql, $oraConn) 
    $reader = $oraCmd.ExecuteReader() 

    #add tables to arraylist 
    while ($reader.Read()) { 
     $table = New-Object Table 
     $table.name = $reader["name"]; 
     $table.type = $reader["type"]; 
     [void]$rows.Add($table) 
    } 
    Write-Host "rows collected" 
} 

私の問題は、私はテーブルの最初の行だけを読んでいます。どうすればそれらをすべて読むようにOracleに伝えることができますか?最初にcountにしてから各行をクエリする必要がありますか?

コード内で$rowsの内容を確認していますが、この部分が機能していることがわかっているので質問にはあまり関係ありません。 私はOracleで試したので、私のクエリが何かを返すことを知っています。

ループにはforeachループが必要ですか?それは理にかなっていますが、どうすればOracleにそのことを伝えることができますか?テーブルの各行を照会し、一度に1つの行のみを照会するようにカウンターを設定する必要がありますか?

誰かが私を助けて正しい方向に向けることを願っています。私は既にスクリプトの作成に長時間をかけています。私はスクリプトのロジックをほとんど持っていますが、私のリストに行をロードできなければ、私のロジックは私を助けません。

+0

私は 'コードの最初の行rows'in $を定義します。これはArrayListです。 – Obongo

+0

私のせいです。完全に監督する。 tryブロックから定義されている理由はありますか?なぜ '[string]'の 'format()'メソッドを使うのですか? (少なくとも2つのパラメータを持っていてはいけないのですか?) – Clijsters

+0

コードのフォーマットには問題ありません。 私のスクリプトでは、スクリプト全体で使用されているほとんどの変数を開始セクションで定義しているので、私はそれを定義しました。 – Obongo

答えて

0

は独自のソリューションのためのいくつかの拠点として、次のコードスニペットを使用します。

$cs = 'data source=oradb;user id=/;dba privilege=sysdba' 
$oc = new-object oracle.dataaccess.client.oracleconnection $cs 
$oc.open() 
$cm = new-object oracle.dataaccess.client.oraclecommand 
$cm.connection = $oc 
$cm.commandtext = "select name, type from source_table where type = 'running'" 
$da = new-object oracle.dataaccess.client.oracledataadapter 
$da.selectcommand = $cm 
$tbl = new-object data.datatable 
$da.fill($tbl) 
$tbl | %{"$($_.name = $_.type)"} 
関連する問題