powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получение значения функции из Oracle
3 сообщений из 3, страница 1 из 1
Получение значения функции из Oracle
    #37612948
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени!

На Oracle есть функция, которая вставляет записи в таблицу (insert) и возвращает (integer) 0 - успех, не 0 - все плохо...
из VS 2008 соеденяюсь с БД с помощью System.Data.OracleClient...
код:
Код: vbnet
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.
Dim dataCnn As New OracleConnection("Data Source=myServer;User Id=myLog;Password=myPswd;Integrated Security=no;")
        Try
            dataCnn.Open()
            MessageBox.Show("Подключение к '" & dataCnn.DataSource & "' установлено.")

            Dim myQuery As String = "BEGIN :Result:=MYDB.MYFUNC(:p1,:p2); END;"

            Dim dataCmd As New OracleClient.OracleCommand(myQuery, dataCnn)
            dataCmd.CommandType = CommandType.Text

            dataCmd.Parameters.AddRange(New OracleParameter() { _
                            New OracleParameter("Result", OracleType.Int32, 0, ParameterDirection.Output), _
                            New OracleParameter("p1", OracleType.Int32, 0, ParameterDirection.Input) With _
                                                                                            {.Value = 980769}, _
                            New OracleParameter("p2", OracleType.DateTime, 0, ParameterDirection.Input) With _
                                                                                            {.Value = Date.Now.Date}})

            dataCmd.ExecuteNonQuery()
            MessageBox.Show(dataCmd.Parameters("Result").Value.ToString())

        Catch ex As OracleException
            MsgBox(ex.ToString)
        Catch ex As Exception
            MsgBox(ex.ToString)
        Finally
            If dataCnn IsNot Nothing AndAlso dataCnn.State <> ConnectionState.Closed Then dataCnn.Close()
        End Try



возращает ошибку
System.Data.OracleClient.OracleException: ORA-01008: not all variables bound
убираю параметр Result
"DECLARE res integer; BEGIN res:=MYDB.MYFUNC(:p1,:p2); END;"
Выполняется на "Ура"
Если перевести команду в тип StoredProcedure (соответственно поменяв запрос, и параметр Result.Direction=ReturnValue) выпадает ошибка даты (второго параметра p2)
...
Подскажите решение...
...
Рейтинг: 0 / 0
Получение значения функции из Oracle
    #37617256
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "MYDB.MYFUNC";
OracleCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["p1"].Value = 98076;
cmd.Parameters["p2"].Value = DateTime.Now;
tmpObject = cmd.ExecuteNonQuery();
tmpInt = Convert.ToInt32(cmd.Parameters["return_value"].Value);


???
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получение значения функции из Oracle
    #37617545
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft,
таки рулит!!!!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получение значения функции из Oracle
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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