ODP.NET VB.Net вызывает хранимую процедуру и возвращает refCursor - PullRequest
0 голосов
/ 28 марта 2011

Эта проблема сводила меня с ума уже больше суток.Я могу создать соединение с базой данных, я могу выполнить sql и вернуть результаты из этого, но я не могу вызвать хранимую процедуру.Вот код

    Dim myCMD As New OracleCommand
    Dim TheDataReader as New OracleDataReader

    myConnection1.Open()

    myCMD.Connection = myConnection1
    myCMD.CommandType = CommandType.StoredProcedure
    myCMD.CommandText = "WS_DATA_LAYER.select_user_groups"

    myCMD.Parameters.Add(New OracleParameter("id_user", OracleDbType.VarChar2)).Value = "TXA"
    myCMD.Parameters.Add(New OracleParameter("ws_rs", OracleDbType.RefCursor)).Direction = ParameterDirection.Output

    ' Tried every single execute function here and none have worked
    ' Either error is thrown or empty refcursor
    myCMD.ExecuteScalar()

    TheDataReader = myCMD.Parameters(1).Value().GetDataReader()

Проблема лежит в ExecuteScalar на данный момент.Выдает исключение под названием «Входная строка была не в правильном формате».Я попытался передать строку с одинарными кавычками Oracle и получить то же самое.Если я использую

    TheDataReader = myCMD.ExecuteQuery()

, все работает нормально, но результаты не возвращаются.Я проверил, что процедура возвращает результаты для пользователя, вошедшего в систему как.Когда запрос выполнялся, я мог видеть рефкурсор там, но он был пуст.Я, должно быть, схожу с ума.

Любая помощь приветствуется

1 Ответ

1 голос
/ 10 мая 2011

Любой другой, у кого может быть эта проблема, я передавал OracleDBType.Varchar2 в качестве параметра вышеупомянутому методу VB. Но я объявил его как целое число, его нужно явно передать как OracleDBType

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...