Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / dbExpress, Firebird, SP, BLOB / 4 сообщений из 4, страница 1 из 1
30.01.2020, 18:13
    #39920637
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbExpress, Firebird, SP, BLOB
А это известно, что dbExpress не умеет читать BLOB-параметры из Stored Procedures в Firebird ?

Как минимум Delphi XE2 - XE10.1 и FB 2.1 - 2.5 ?

Казалось бы, если из таблиц умеешь, то и из проедур должен уметь? а вот фиг...
...
Рейтинг: 0 / 0
30.01.2020, 18:19
    #39920644
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbExpress, Firebird, SP, BLOB
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create or alter procedure PR_CHECK_E
returns (
    USED_BY blob sub_type 1 segment size 80)
as
begin

  USED_BY = 'AAZAAZAA';

end;

create or alter procedure PR_CHECK_S
returns (
    USED_BY blob sub_type 1 segment size 80)
as
begin

  USED_BY = 'AAZAAZAA';

  SUSPEND;

end;

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
procedure TForm26.PrepareDBX;
begin
  with con1 do begin
    DriverName := 'Firebird';
    VendorLib := ExtractFileName(edtLFB.Text);
    LoginPrompt := False;

    Params.Values['DataBase'] := edtLDB.Text;

    Params.Add('ServerCharSet=WIN1251');
    Params.Add('lc_ctype=WIN1251');
    Params.Add('ISC_DPB_LC_CTYPE=WIN1251');
    Params.Add('SQLDialect=3'); // в предыдущем апдейте всех затащили

    Params.Values['User_Name'] := 'sysdba';
    Params.Values['Password'] := 'masterkey';
  end;

  con1.Open;

  con1.BeginTransaction;

  sp1.StoredProcName := 'PR_CHECK_E';
  sp2.StoredProcName := 'PR_CHECK_S';
  qr1.CommandText := 'select * from PR_CHECK_S';

  with sp1.Params do begin
    Clear;
    with AddParameter do begin
      Name := 'USED_BY';
      DataType := ftMemo;
      ParamType := ptOutput;
    end;
  end;

  qr1.Prepared := True;
  sp1.Prepared := True;
  sp2.Prepared := True;
end;

procedure TForm26.btn1Click(Sender: TObject);
begin
  with sp1 do begin
    ExecProc;
    ShowMessage('BLOB is: ' + Params[0].AsMemo);   //  Unknown error ISC 0
  end;
end;

procedure TForm26.btn2Click(Sender: TObject);
begin
  with sp2 do begin
    ExecProc;
    ShowMessage('BLOB is: ' + Params[0].AsMemo);   //  Invalid SQLDA structure
  end;
end;

procedure TForm26.btn3Click(Sender: TObject);
begin
  with qr1 do begin
    Open;
    try
      ShowMessage('BLOB is: ' + Fields[0].AsString);   //  CORRECT !!!
    finally
      Close;
    end;
  end;
end;



Может кто-нибудь это проверить на последней версии Delphi и закинуть им в Jira ?
Пусть висит...
...
Рейтинг: 0 / 0
31.01.2020, 10:58
    #39920926
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbExpress, Firebird, SP, BLOB
30.01.2020 18:19, Arioch пишет:
>
> Пусть висит...
>

а не пора ли таки уже закопать стюардессу?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
31.01.2020, 14:28
    #39921011
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dbExpress, Firebird, SP, BLOB
Arioch
Код: pascal
1.
ShowMessage('BLOB is: ' + Params[0].AsMemo);   //  Unknown error ISC 0

Не знаю как dbExpress, но TIBSQL передает возвращаемые параметры через Fields. Вне зависимости от того стоит SUSPEND или нет.

Также в TIBSQL есть пропертя FetchFirstRecord
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / dbExpress, Firebird, SP, BLOB / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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