Страница 1 из 1

Delphi / FB or IB / StoredProc and TStoredProc

Добавлено: 27 июл 2008, 21:39
ERrorMAKros
Добрый день, есть вот такая вот таблица:

Код: Выделить всё

CREATE TABLE IBcurrencydata
(
AINC                     INTEGER         DEFAULT  NULL, // инкримент;
CURDAT_DATE              VARCHAR(255)    DEFAULT  NULL, // дата;
CURDAT_INFO              BLOB            SUB_TYPE 1); // настройки ini файла;
Хранимая процедура получает из IBcurrencydata.CURDAT_INFO в INI_VALUE_ текстовую информацию

Код: Выделить всё

CREATE  OR ALTER PROCEDURE GET_DATEVALUE(DATE_ VARCHAR(25))
        RETURNS(INI_VALUE_    BLOB SUB_TYPE 1,
                RECORD_COUNT_ INTEGER)
AS
BEGIN
   SELECT COUNT (IBCURRENCYDATA.CURDAT_INFO)
   FROM  IBCURRENCYDATA
   WHERE  IBCURRENCYDATA.CURDAT_DATE=:DATE_
   INTO :RECORD_COUNT_;

   IF (RECORD_COUNT_>=001) THEN
     BEGIN 
        SELECT FIRST 1 IBCURRENCYDATA.CURDAT_INFO
        FROM IBCURRENCYDATA
        WHERE IBCURRENCYDATA.CURDAT_DATE=:DATE_
        ORDER BY IBCURRENCYDATA.AINC
        INTO :INI_VALUE_;
        SUSPEND;
     END -- IF RECORD COUNT
   ELSE INI_VALUE_='NONE';
     SUSPEND;
END -- PROCEDURE
Подскажите пожалуйста - как средствами Borland Delphi получить результат (INI_VALUE_) хранимой процедуры? Воспользовался TStoredProc:

Код: Выделить всё

var Res_: String;
Begin
IB_storedproc_.UnPrepare;
IB_storedproc_.StoredProcName  :='GET_DATEVALUE';
IB_storedproc_.Prepare;
IB_storedproc_.Params.ParamByName('DATE_').AsString:='27.07.2008';          
IB_storedproc_.ExecProc;
Res_:=IB_storedproc_.ParamByName('INI_VALUE_').AsString;
End;
...данная реализация не устраивает, потому как возвращаются не те значения (в данном случае "(blob)"),
и если данные больше 255 символов - ...то это уже конкретно crash!

Подскажите пожалуйста альтернативу!

Добавлено: 28 июл 2008, 00:04
kdv
читай www.ibase.ru/devinfo/ibstp.htm
и еще - я тебе форматирование кода поправил. Пришлешь еще раз такое - удалю.

кроме того - нафига ты suspend пишешь, если процедуру не через select ... from proc вызываешь, а IBStoredProc используешь?

до кучи читай и это:
http://www.ibase.ru/devinfo/treereg.htm

Добавлено: 28 июл 2008, 01:27
ERrorMAKros
Спасибо. Помогло.