oracle - 在 powershell 中处理 null

标签 oracle powershell

我确信以前有人问过这个问题,但我在这里或互联网上找不到任何内容。我正在尝试使用 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 *

在我看来,除了临时类型查询之外,这都是不好的做法。

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

相关文章:

java - 在 Oracle 和 Hibernate 中使用 ID 列序列会创建奇怪的(负)值

java - ojdbc8.jar 可以用于使用 Java 连接/查询 Oracle XE 吗?

sql - 检查字符串的约束以仅包含数字。 (Oracle SQL)

powershell - 在powershell中添加属性

Powershell:特定网卡的计数器实例名称

Oracle PL-SQL : insert a rowtype after select - no enough values

oracle - JPA 2.0 Oracle DATE 时间为空

powershell - 如果未设置 TFS 构建变量,如何回退到默认值?

events - Get-WinEvent 开始和结束日期不过滤记录

.net - powershell中.net框架对象的构造函数/方法问题