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

Функция

Дать порцию 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;