Метод read () внутри sqldatareader в powershell не работает с циклом while - PullRequest
0 голосов
/ 06 января 2020

sqldatareader не читает строки при размещении внутри конструкции l oop. есть одна строка, возвращенная из запроса sql, который я проверял в БД. когда я читаю это просто без какой-либо конструкции, это чтение данных. Следующий фрагмент кода, помещенный над конструкцией while l oop, дает мне данные в файле журнала. в то время как l oop не будет активирован, так как есть только одна строка, и это нормально.

$sqloutqryreader = MsSqlQueryExecutor -SqlQuery $SqlQuery -logfile $logfile
    $sqloutqryreader.Read() 
                    $InputFileLst = $sqloutqryreader["InputFiles"]  
                    Add-Content -Value "$TimeinSec Log: Reading data from sql reader $InputFileLst" -Path $logfile          


                    $rdrRowCnt = 0                          

                    while($sqloutqryreader.Read()) 
                        {   
                            $rdrRowCnt++

                            if($rdrRowCnt -gt 1)
                                {
                                    Add-Content -Value "$TimeinSec Ambiguity: two Records are found for the current job: $jobname in the $mastTableNm table, hence aborting" -Path $logfile
                                    exit
                                }
                            $InputFileLst = $sqloutqryreader["InputFiles"].Split(";")
                            $OutputFileLst = $sqloutqryreader["OutputFiles"].Split(";")
                            Add-Content -Value "$TimeinSec Log: Input files:$InputFileLst and outputfiles:$OutputFileLst found for the current job: $jobname in the $mastTableNm table" -Path $logfile
                        }   

однако, когда я помещаю следующее, пока l oop конструирует, в то время как l oop не активируется , Поскольку есть одна строка, она должна быть активирована.

$sqloutqryreader = MsSqlQueryExecutor -SqlQuery $SqlQuery -logfile $logfile
    $rdrRowCnt = 0                                          
                    while($sqloutqryreader.Read()) 
                        {   
                            $rdrRowCnt++

                            if($rdrRowCnt -gt 1)
                                {
                                    Add-Content -Value "$TimeinSec Ambiguity: two Records are found for the current job: $jobname in the $mastTableNm table, hence aborting" -Path $logfile
                                    exit
                                }
                            $InputFileLst = $sqloutqryreader["InputFiles"].Split(";")
                            $OutputFileLst = $sqloutqryreader["OutputFiles"].Split(";")
                            Add-Content -Value "$TimeinSec Log: Input files:$InputFileLst and outputfiles:$OutputFileLst found for the current job: $jobname in the $mastTableNm table" -Path $logfile
                        }   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...