powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Нет в данных в OdbcDataReader
1 сообщений из 1, страница 1 из 1
Нет в данных в OdbcDataReader
    #38017055
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь прочитать несколько курсоров из процедуры Оракла в PowerShell. Тестирую пока на запросе. Данных нет.
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
function Get-SqlResults {
    [cmdletbinding()]
    Param (
        [System.Data.Odbc.OdbcCommand]$Query,
        [System.Data.Odbc.OdbcDataReader]$Reader
    )

    Begin {
        if ($Reader -eq $Null) {
            $Reader = $Query.ExecuteReader()
            $ReaderCreated = $True
        } else {
            $ReaderCreated = $False
        }
    }

    Process {
        while ($Reader.Read()) {
            $v = New-Object -TypeName 'System.Management.Automation.PSObject'
            foreach ($i in (0..($Reader.FieldCount - 1))) {
              Add-Member -InputObject $v -MemberType NoteProperty -Name $Reader.GetName($i) -Value $Reader.Item($i)
            }
            $v #return fetch results
        }
    }

    End {
        if ($ReaderCreated) {
            $Reader.Close()
        } else {
            $Dummy = $Reader.NextResult()
        }
    }
}

$Connection = New-Object system.data.odbc.odbcconnection
$Connection.ConnectionString = 'DSN=;Uid=;Pwd=' # тут, конечно, на самом деле правильная строка соединения
$Connection.Open()

$Query = New-Object system.data.odbc.odbccommand
$Query.Connection = $connection
$Query.CommandText = 'select dummy, level lv from dual connect by level <= 3'

if ($True) {
    $R = $Query.ExecuteReader()
    Get-SqlResults -Reader $R -Verbose
    $R.Close()
} else {
    Get-SqlResults -Query $Query -Verbose
}

$Connection.Close()


Если в условии в строке 45 заменить True на False, по данные возвращаются. Т.е. если я открываю DataReader в функции, или открываю его без функции, то $Reader.Read() возвращает True и данные показываются.
Почему так и что как исправить?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Нет в данных в OdbcDataReader
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]