Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / Нет в данных в OdbcDataReader / 1 сообщений из 1, страница 1 из 1
29.10.2012, 14:43
    #38017055
Гхостик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет в данных в OdbcDataReader
Пытаюсь прочитать несколько курсоров из процедуры Оракла в 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
Форумы / Windows [игнор отключен] [закрыт для гостей] / Нет в данных в OdbcDataReader / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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