powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle, Raw(),C#
14 сообщений из 14, страница 1 из 1
Oracle, Raw(),C#
    #39564907
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги!
Помогите дилетанту научиться работать с типом RAW Oracle.
Имею: Oracle, Devart dbConnect Data Provider, C#.
Формирую параметры и выполняю хранимую процедуру Insert
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    //-- INSERT
    //==============================================================================
    private void btc_Новая_Click(object sender, RoutedEventArgs e) {
      if (!bl_Разрешение) return; //-- Запрет обработки нажатия
      //-- Готовим параметры запроса
      asp = new OracleParameter[10] {
        new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
        new OracleParameter("x_dt_pusk", DateTime.Now),
        new OracleParameter("x_nom_puska", "?????"),
        new OracleParameter("x_strana_puska", "?????"),
        new OracleParameter("x_mesto_puska", "?????"),
        new OracleParameter("x_lng_s", 0),
        new OracleParameter("x_lat_s", 0),
        new OracleParameter("x_lng_p", 0),
        new OracleParameter("x_lat_p", 0),
        new OracleParameter("reg", OracleDbType.Raw, 84, x_reg84, ParameterDirection.Input)
      };
    . . . 

где
byte[] x_reg84 = new byte[84]{0x00,...,0x00};

Имею то, что на слайде - число значений в поле RAW в два раза больше, чем в векторе x_reg84
В чем моя ошибка?
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39564929
ВМоисеев,

Либо конструктор OracleParameter берет x_reg84 как toString(), либо "процедуру Insert" имеет входным параметром char, либо...
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39564946
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Вариантов ..., сегодня, 11:46 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1279255&msg=21010280][21010280]
>...либо...
Либо поле RAW хранит не только истинные значения, но и какую то служебную информацию
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39564979
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"либо..." - в топку

значений в поле RAW в два раза больше
Очень похоже, что из бинари произошла переконвертация в HEX. кол-во байтов стало в 2-а раза больше, вместо нулей в базу записалось "00" ( 0x3030 )

Т.ч. "Вариантов ... " ответил совершенно точно. Где-то произошло неявное преобразование типов

IMHO & AFAIK
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565144
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Leonid Kudryavtsev, сегодня, 12:39 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1279255&msg=21010462] [21010462]
>"либо..." - в топку

SELET возвращает те же 84.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
      . . . 
      //-- Формируем значение региона падения по умолчанию
      for (int i = 0; i < 84; i++) x_reg84[i] = (byte)i;
      //orb = new OracleBinary(x_reg84);
      . . .
      //-- Прием RAW
      if (!record.IsDBNull(10)) {
        byte[] xbt = new byte[84];
        record.GetBytes(10, 0, xbt, 0, 84);
        xrow.reg = xbt;
      } 
      . . .


xbt=x_reg84 по байтно
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565149
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ВМоисеев, сегодня, 15:03 [21011260]
Поспешишь - людей насмешишь
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565216
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Борис,

Почитал на msdn , так и не понял, какой из конструкторов ты пытаешься вызвать. Показывай сигнатуру конструктора и oracle-функции, которая принимает параметры.
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565219
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи, что даст dump от этого поля в БД, чтобы убедиться, что твой ui не врет.
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565356
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>AmKad, сегодня, 15:03 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1279255&msg=21011602][21011260]
>... Показывай сигнатуру конструктора ...
Использую Devart Data Provider.
Сигнатура на слайде.
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565447
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так ты разобрался в чем проблема? Dump от поля брал?
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565470
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев...Использую Devart Data Provider....
дык
1. как минимум версию указывать надо
2. у данного продукта есть свой сайт. Как минимум есть сообщения об исправленных багах с OracleDbType.Raw.

AFAIK
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565481
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>AmKad, вчера, 22:42 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1279255&msg=21012994] [21012994]
>...Dump от поля брал?
На слайде.
Только не пойму, что это даёт - черный ящик выполняет функцию. Я же не знаю, что он делает.
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565483
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Leonid Kudryavtsev, вчера, 23:39 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1279255&msg=21013136] [21013136]
>... исправленных багах с OracleDbType.Raw.
Как такового бага нет. Средствами devart-а пишу и читаю поле RAW() штатно. Вопрос, что реально записано в это поле на диске.
Сложно понять, что показывает PL/SQL Developer.
...
Рейтинг: 0 / 0
Oracle, Raw(),C#
    #39565525
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевТолько не пойму, что это даёт - черный ящик выполняет функцию. Я же не знаю, что он делает.Есть мнение, что твой PL/SQL Developer может нечестно показывать бинарное представление данных и ты копаешь не в ту сторону. Про dump читай на docs.oracle.com. Как я успел заметить, на 8-ой строке твоего скрина raw длиной в 84 байта.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle, Raw(),C#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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