gpt4 book ai didi

oracle - 在Powershell中处理null

转载 作者:行者123 更新时间:2023-12-02 23:48:02 27 4
gpt4 key购买 nike

我敢肯定这已经被问过了,但是我在这里或互联网上找不到任何东西。我正在尝试使用Powershell来查询一个oracle数据库,直到它达到空值然后崩溃为止,它似乎还可以。

这是我的代码。

# 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 "
}

错误信息:

Exception calling "GetString" with "1" argument(s): "Column contains NULL data" At C:\users\klynch\test.ps1:34 char:27 + $dnp=$reader.GetString <<<< (16) + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

最佳答案

我将摆脱“SELECT *”并显式命名您的字段。然后,您可以使用NVL / COALESCE将NULL值转换为可以处理的值。前面要进行更多输入,但是它会记录您所选择的内容,并且如果表结构发生更改,可能会在以后帮助您避免错误。

SELECT *



对于即席类型查询,IMO是不好的做法,对于任何其他类型的查询都是如此。

关于oracle - 在Powershell中处理null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11564240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com