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

На 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
16.01.2012, 23:42
    #37617256
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения функции из Oracle
Код: 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
17.01.2012, 10:46
    #37617545
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения функции из Oracle
Ex_Soft,
таки рулит!!!!
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получение значения функции из Oracle / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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