我確信之前已經詢問過這個問題,但在這裏或Internet上找不到任何東西。我試圖使用PowerShell來查詢一個Oracle數據庫,它似乎沒有問題,直到它達到一個空值,然後它爆炸。在PowerShell中處理空值
這是我的代碼。
# Create a datareader for a SQL statement
$sql="select * from legacydb.ebt_invoice_dtl where premnum = 397743"
$command = New-Object Oracle.DataAccess.Client.OracleCommand($sql,$conn)
$reader=$command.ExecuteReader()
# Write out the result set structure
for ($i=0;$i -lt $reader.FieldCount;$i++) {
Write-Host $reader.GetName($i) $reader.GetDataTypeName($i)
}
# Write out the results
while ($reader.read()) {
$dtl_id=$reader.GetDecimal(0)
$invoice_id=$reader.GetDecimal(1)
$debtor=$reader.GetInt64(2)
$premise=$reader.GetInt64(3)
$license=$reader.GetString(4)
$invoice_num=$reader.GetInt64(5)
$deb_cred=$reader.GetString(6)
$inv_ref=$reader.GetString(7)
$rate=$reader.GetDecimal(8)
$charge=$reader.GetDouble(9)
$usage=$reader.GetInt64(10)
$tax=$reader.GetDouble(11)
$rate_code=$reader.GetString(12)
$inv_date=$reader.GetDateTime(13)
$missed=$reader.GetString(14)
$change_date=$reader.GetDateTime(15)
$dnp=$reader.GetString(16)
Write-Host "$dtl_id $invoice_id $debtor $premise $license $invoice_num $deb_cred $inv_ref $rate $charge $usage $tax $rate_code $inv_date $missed $change_date $dnp "
}
錯誤消息:
異常調用 「的GetString」 與 「1」 的參數(一個或多個): 「列包含 NULL數據」 在C:\用戶\ klynch \ test.ps1:34炭:27 + $ DNP = $ reader.GetString < < < <(16) + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException
「然後它炸燬」 - 你能讓我們有錯誤信息嗎? – Ollie 2012-07-19 15:45:49
上面添加了錯誤消息。 – Ken 2012-07-19 15:51:27