提问人:Brute 提问时间:5/31/2022 更新时间:5/31/2022 访问量:83
Oracle SQL 查询在应该为空时返回一些数据-PowerShell
Oracle SQL query returns some data when it should be empty-PowerShell
问:
我正在 PowerShell Core 7.2 中编写脚本。我从一个文件夹中获取一个文件列表,我根据 Oracle 数据库检查该文件夹。我需要描述的数据,如果文件在数据库中,我需要NC_Name列。 问题是,即使文件不在数据库中,它仍然返回数据,但返回其他文件的数据。 例如:我有一个文件列表,File#1、File#2、File#3。如果 File#2 不在数据库中,它仍然返回 File#1 的数据。
我试过计算行数并将其作为条件。如
$rowNum = $connection.count
这样做的问题是它永远不会为零,因为它返回其他文件的数据;因为变量从不为空。$rowNum
$fileName
我还尝试在查询本身中检查文件名,但它给出了很多错误。查询是
$query="DECLARE record_exists INTEGER; BEGIN SELECT COUNT(*) INTO record_exists FROM NC_PROGRAMS WHERE NC_PROGRAMS.NC_NAME = '$fileName' AND ROWNUM = 1; IF record_exists = 1 THEN Select DESCRIPTION, NC_NAME"
代码为:
#Get all files
$result = $start.EnumerateDirectories() | ForEach-Object -Parallel {
$_.GetFiles('*.EIA', $using:enum)
}
$result | Format-Table -AutoSize
foreach($item in $result){
$fileName = $item.BaseName
#Oracle connection
Add-Type -Path C:\lib\netstandard2.1\Oracle.ManagedDataAccess.dll
$query = "Select DESCRIPTION, NC_NAME From NC_PROGRAMS WHERE
NC_PROGRAMS.NC_NAME = '$fileName' "
$connectionString = "connectionString"
$connection = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connectionString)
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $query
$reader = $command.ExecuteReader()
$rowNum = $connection.count
Write-host "Number of rows-"$rowNum
while($reader.Read()) {
$description=$reader.GetString(0)
$fastemsFileName = $reader.GetString(1)
}
$connection.Close()
}
答: 暂无答案
评论
$connection.Count
如果连接到数据库,将始终返回 1。您需要从以下位置获取计数:stackoverflow.com/questions/3959511/...$reader
$reader
OracleDataReader
HasRows
$reader
$reader | Get-Member