Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC 10.3.1 vs 10.3.2 / 15 сообщений из 15, страница 1 из 1
18.09.2019, 14:33
    #39863334
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
Добрый день.
Танцы с бубном продолжаются.
Приложение скомпиленное в Delphi 10.3.1 сохраняет в БД Oracle нормально.
Решил попробовать собрать проект в Delphi 10.3.2

хранимая процедура такая

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
 TYPE TAB_pl_int IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
 TYPE TAB_pl_str IS TABLE OF varchar2(500) INDEX BY PLS_INTEGER;
 TYPE TAB_pl_dt IS TABLE OF date INDEX BY PLS_INTEGER;

 procedure insert_buf(mDate         in TAB_pl_dt,
                                mString       in TAB_pl_str,
                               mInteger      in TAB_pl_int,
                               v_cnt           in number);



в коде

Код: pascal
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.
Result:= TFDStoredProc.Create(nil);
    Result.ResourceOptions.CmdExecMode := amBlocking;
    Result.FetchOptions.Items:= [];
    Result.ResourceOptions.SilentMode:= True;
    Result.Params.Clear;
    Result.StoredProcName:='insert_buf';
    Result.PackageName:= 'pkg';

    with Result.Params.Add do begin
      Name:= 'mDate';
      ArraySize:= ASize;
      ArrayType:= atTable;
      DataType:= ftDateTime;
    end;

    with Result.Params.Add do begin
      Name:= 'mString';
      ArraySize:= ASize;
      ArrayType:= atTable;
      DataType:= ftString;
      Size:= 10;
    end;

    with Result.Params.Add do begin
      Name:= 'mInteger';
      ArraySize:= ASize;
      ArrayType:= atTable;
      DataType:= ftInteger;
    end;

    with Result.Params.Add do begin
      Name:= 'v_cnt';
      DataType:= ftInteger;
    end;	



на выполнении запроса вылетает ошибка несоответствия типов "Array bind type must match PL/SQL table row type"
Код: pascal
1.
oProc.ExecProc;
...
Рейтинг: 0 / 0
18.09.2019, 14:42
    #39863342
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
на сервере две процедуры с одним названием, но типы параметров другие. в 10.3.1 почему то берет первую, а в 10.3.2 вторую
...
Рейтинг: 0 / 0
18.09.2019, 18:03
    #39863491
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
лет 7 назад когда я впирался с оверлоадами в anydac то дмитрий помнится мои правки брал в код дескрайбера. может поменяли что, можно сравнить в разных версиях. ну и вообще оттрейсить где его ломает. или тупо номер оверлоада указать, только не забыть об этом, если вдруг еще будут меняться-добавляться
...
Рейтинг: 0 / 0
18.09.2019, 19:03
    #39863531
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
1) Как FireDAC определяет параметры по умолчанию ?
2) Нужен отчет об окружении FireDAC.
3) Нужен полноценный тестовый проект с DDL скриптом.

PS: Вообще есть quality.embarcadero.com
...
Рейтинг: 0 / 0
19.09.2019, 08:19
    #39863672
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
Dmitry Arefiev, напишу, просто я думал здесь получить ответ быстрее
...
Рейтинг: 0 / 0
19.09.2019, 14:40
    #39863991
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
Dmitry ArefievPS: Вообще есть quality.embarcadero.comА его кто-то читает?
...
Рейтинг: 0 / 0
19.09.2019, 22:35
    #39864260
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
_Vasilisk_А его кто-то читает?
Вне sql.ru жизнь есть
...
Рейтинг: 0 / 0
20.09.2019, 11:43
    #39864467
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
пока делал тестовый пример нашел в чем причина.
на сервере две процедуры с одинаковы названиями, типами полей, но порядок входных параметров разный.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure insert_buf(mDate       in TAB_pl_dt,
                   mString       in TAB_pl_str,
                   mInteger      in TAB_pl_int,
                   v_cnt         in number);

procedure insert_buf(mDate      in TAB_pl_dt,
                  mInteger      in TAB_pl_int,
                  mString       in TAB_pl_str,
                  v_cnt         in number);



параметры TFDStoredProc я задаю по имени, а заполняю по индексу чтобы быстрее было.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with Result.Params.Add do begin
      Name:= 'mInteger';
      ArraySize:= ASize;
      ArrayType:= atTable;
      DataType:= ftInteger;
    end;

....
FDStoredProc.Params[0].Values[i]:= AInteger;
....



В версии 10.3.1 выполняется запрос без ошибок, а в версии 10.3.2 вылетает с ошибкой, что типы не соответствуют.
Если заполнение параметра изменить на

Код: pascal
1.
FDStoredProc.Parambyname('mInteger').Values[i]:= AInteger;



то запрос выполняется без ошибок в любой версии.
...
Рейтинг: 0 / 0
20.09.2019, 12:03
    #39864490
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
cptngrbзаполняю по индексуну это чревато подобными сюрпризами что и продемонстрировалось. я просил у димы синтаксис для вызова с поименованными как у доа но в итоге пришлось самому в наследнике пилить да еще и родные сорцы покорежить
cptngrbчтобы быстрее былоесли в этом месте скорость важна то можно сохранить "разок" ссылки на найденные по имени параметры
...
Рейтинг: 0 / 0
20.09.2019, 12:06
    #39864493
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
vavanесли в этом месте скорость важна то можно сохранить "разок" ссылки на найденные по имени параметры
Видимо придется делать костыль
...
Рейтинг: 0 / 0
20.09.2019, 12:26
    #39864526
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
cptngrb, странная трактовка
...
Рейтинг: 0 / 0
20.09.2019, 12:31
    #39864533
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
vavan,
по моему мнению, код написанный почти в одной версии не должен ломаться, а если нужно что-то дописывать просто "потому что", то это костыль
...
Рейтинг: 0 / 0
20.09.2019, 12:32
    #39864536
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
10.2.3, 10.3, 10.3.1 работает и вдруг (10.3.2) нужно еще немного дописать
...
Рейтинг: 0 / 0
20.09.2019, 12:43
    #39864551
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
cptngrb, так возможно он работал "случайно" лишь потому что ошибка была, а теперь исправлена
хотя возможно и наоборот, разобраться следовало бы
...
Рейтинг: 0 / 0
20.09.2019, 12:45
    #39864554
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FireDAC 10.3.1 vs 10.3.2
vavan, всяко может быть
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC 10.3.1 vs 10.3.2 / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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