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

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

Казалось бы, если из таблиц умеешь, то и из проедур должен уметь? а вот фиг...
...
Рейтинг: 0 / 0
dbExpress, Firebird, SP, BLOB
    #39920644
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
dbExpress, Firebird, SP, BLOB
    #39920926
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
30.01.2020 18:19, Arioch пишет:
>
> Пусть висит...
>

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

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

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

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


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