Дать порцию BLOB-значения

Функция

Дать порцию BLOB-значения.

Спецификация
 
< смещение порции >::=
< размер порции >::=
Синтаксические правила
  1. При выполнении функции BLOB-данные рассматриваются как непрерывный массив байт, т.е. выделение слов игнорируется.

  2. < Смещение порции > – целое неотрицательное значение типа INTEGER, задающее номер байта, с которого начинается порция данных. Отсчет выполняется с 1.

  3. < Размер порции > – целое неотрицательное значение типа INTEGER не больше 4000, задающее размер порции в байтах.

  4. Выбор порции выполняется во всех BLOB-значениях, получаемых в < запросе выборки >.

  5. Аргумент < смещение > может быть задан < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

    create or replace table test(bl blob);
    insert into test values(null);
    blob insert column=1 333333ABCDc0ff4532;
    select getblob(bl, ? (int), 5) from test;
    7
    5
    | FF 45 32 AB CD|
Возвращаемое значение
  1. Возвращается строка длиной < размер порции > (для строк с фиксированной длиной) или строка фактической длины (для строк с переменной длиной в случае, если размер BLOB-данных меньше запрошенной порции).

  2. Если размер BLOB-данных меньше запрошенной порции, то возвращаемые строки фиксированной длины дополняются пробелами до запрошенной длины.

  3. Если один из параметров имеет значение NULL или требуемая порция не найдена, возвращается NULL-значение.

  4. Тип возвращаемого значения BYTE, т.е. данные представлены в виде последовательности байт.

  5. Если BLOB-данные имеют NULL-значение, возвращается NULL-значение.

Примеры
SELECT FName, GETBLOB(TextBlob,1,60) FROM fb ORDER BY FName;

SELECT GETBLOB (ArticleText,FINDBLOB(ArticleText, 'Russian', 1), 32) AS FirstWord
       GETBLOB (ArticleText ,FINDBLOB(ArticleText,'Russian', COUNTBLOB(ArticleText, 'Russian')), 32) AS LastWord
  FROM Da
 WHERE COUNTBLOB(Da.ArticleText, 'Russian')  >0;