Вниз
Скачать: CL | DM;

Чтение курсора (c BLOB )из Хранимой процедуры ORACLE в BDE   Найти похожие ветки 

 
Axelrodm ©   (2004-06-13 13:39) [0]

ORACLE 8i
CLIENT-SERVER

Имеется Хр. Прос. возвращающая BLOB.


PACKAGE ManageBlob AS
  TYPE tAbstract IS REF CURSOR;
..................................
procedure GetBlobFromTable(ID IN Integer, TableName in varchar, CUR IN out tAbstract) is
     BL BLOB:=NULL;
  ID_COL varchar2(250);
  begin
     ID_COL:=GetPrimKeyCol(TableName);
     open CUR for
    " select * from "||TableName||"  where "||ID_COL||"="||ID;
  end GetBlobFromTable;


При обращении к ней через TStoredProc возвращаются только 32К.

procedure TDMod.GET_BLOB (strm: TStream);
begin
  StProcGetBL.Close;
  StProcGetBL.ParamByName("ID").AsInteger:=ID_CH_BL;
  StProcGetBL.Open;
  QTmp:=StProcGetBL as tQuery;
  BL_F:=(StProcGetBL.FieldByName("NAME") as TBlobField);
  Bl_F.SaveToStream(Strm);
  StProcGetBL.Close;
end;


При работе с BLOB через TQuary  все нормально

procedure TDMod.GET_BL_Ch_BL(strm: TStream);
var
  str: string;
begin
  str:="select * from CH_BL where CH_BL.ID="+IntToStr(ID_CH_BL);
("+IntToStr(ID_CH_BL)+") into :NAME  from  dual end;";
  CreSQLText(QTmp,str);
  QTmp.Open;
  BL_F:=(QTmp.FieldByName("NAME") as TBlobField);
  if strm = nil then
     exit;
  Bl_F.SaveToStream(Strm);
  QTmp.Close;
end;

Резултат одинаков в DELPHI5 и DELPHI7
В чем проблема?


 
Внук ©   (2004-06-13 23:49) [1]

А проблема, вероятно, в реализации TStoredProc. Точнее, в ее ограниченных возможностях при работе с Oracle. Сам сталкивался, например, с такой ситуацией, когда при работе в связке BDE->ODBC->Oracle через TStoredProc невозможно получить результирующее значение хранимой функции. Через TQuery все нормально.
 Вообще, видел где-то список всех багов TStoredProc, опубликованный Borland-ом, ссылку не помню, к сожалению. Там, например, сказано, что TStoredProc позволяет в хранимой процедуре иметь не более 10 параметров и т.д.
 Все вышесказанной относится к Delphi5.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.019 c
3-1087276044
query
2004-06-15 09:07
2004.07.11
1 234 567,000 -->>> 1234567


14-1087984728
Adder
2004-06-23 13:58
2004.07.11
%))


4-1085520884
Германн
2004-05-26 01:34
2004.07.11
Documents and Settings


6-1084424963
Владимир_М
2004-05-13 09:09
2004.07.11
Структура пакетов для обмена с Borland Socket Server


6-1084397457
Renald
2004-05-13 01:30
2004.07.11
открыт ли 21 80 порт на удал...




   Наверх