2 dmitr, hvlad: Возможно баги FB2

Gold
Дата: 11.10.2005 15:42:40
Эпсилон по прежнему лежит, потому напишу сюда. Попробуйте выполнить у себя такое:

EXECUTE BLOCK
RETURNS (STR BLOB SUB_TYPE TEXT)
AS
BEGIN
  STR = '';
  SUSPEND;
END
Gold
Дата: 11.10.2005 15:51:11
И вобще блоб-параметры для EXECUTE BLOCK не работают ни в каком виде. я ДАЖЕ я пробовал текстовый блоб в блоке объявить и в SUBSTRING его засунуть - скомпиллировалось без ошибок, но вернуло internal error при вызове :-( А так хочелось чтобы заработало :-)
hvlad
Дата: 11.10.2005 22:47:56
Это не работает и в процедуре. И на 1.5 тоже

Вот такой блок работает нормально
EXECUTE BLOCK (B BLOB = :B)
RETURNS (STR BLOB SUB_TYPE TEXT)
AS
BEGIN
  STR = B;
  SUSPEND;
END
так что
автор
И вобще блоб-параметры для EXECUTE BLOCK не работают ни в каком виде
я бы не говорил
Gold
Дата: 12.10.2005 11:36:34
А почему я не могу строку в блоб-переменную загнять? Это будет лечиться или так и останеться?
Gold
Дата: 12.10.2005 11:55:57
Ну никак не хочет делать CAST('123' AS BLOB SUB_TYPE TEXT) - гофорит что эта фича не поддерживается :-(

Я так понимаю прийдётся UDF писать чтобы размер блоба вычислить и SUBSTRING сделать?
dimitr
Дата: 12.10.2005 12:39:52
Gold
А почему я не могу строку в блоб-переменную загнять?


Патамучта.

Gold
Это будет лечиться или так и останеться?


Будет. Но не в 2.0.

Gold
Ну никак не хочет делать CAST('123' AS BLOB SUB_TYPE TEXT) - гофорит что эта фича не поддерживается :-(


И вправду удивлен?

Gold
Я так понимаю прийдётся UDF писать чтобы размер блоба вычислить?


CHAR_LENGTH?
Gold
Дата: 12.10.2005 13:01:13
Ты сказал что CHARACTER_LENGTH и SUBSTRING работают с блобом. Проверь у себя:

EXECUTE BLOCK (B BLOB = :B)
RETURNS (
  STR BLOB SUB_TYPE TEXT,
  LEN1 INTEGER,
  LEN2 INTEGER,
  SUBSTR1 VARCHAR(100),
  SUBSTR2 VARCHAR(100),
  SUBBLB1 BLOB,
  SUBBLB2 BLOB SUB_TYPE TEXT)
AS
BEGIN
  STR = B;

  LEN1 = CHAR_LENGTH(B);
  LEN2 = CHAR_LENGTH(STR);
  SUBSTR1 = SUBSTRING(B FROM 2 FOR 2);
  SUBSTR2 = SUBSTRING(STR FROM 2 FOR 2);
  SUBBLB1 = SUBSTRING(B FROM 2 FOR 2);
  SUBBLB2 = SUBSTRING(STR FROM 2 FOR 2);

  SUSPEND;
END

У меня ни один из операторов не работает.