Извлечение информации из поля документа

Назначение

Предоставление типизированного значения заданного поля текущего документа BSON-пакета.

Синтаксис

             
extractbool(< курсор >[, < поле >])

Извлекает значение поля типа bool (код BSON 0x08)

extractdouble(< курсор >[, < поле >])

Извлекает значение поля типа double (код BSON 0x01)

extractint(< курсор >[, < поле >])

Извлекает значение поля типа integer (код BSON 0x10)

extractbigint(< курсор >[, < поле >])

Извлекает значение поля типа bigint (код BSON 0x12)

extractstring(< курсор >[, < поле >])

Извлекает значение поля типа string (код BSON 0x02)

extractbytes(< курсор >[, < поле >])

Извлекает значение поля типа byte (код BSON 0x05)

extractdate(< курсор >[, < поле >])

Извлекает значение поля типа date (код BSON 0x09)

< курсор >::= имя курсорной переменной;

< поле >::=символьный англоязычный литерал в кодировке ANSI.

Описание

Функции возвращают значение типа данных, извлекаемое из указанного поля в заданном курсоре и соответствующее семантике функции (таблица 6).

Аргумент < поле > задает имя поля, значение которого должно быть получено, в документе, на котором позиционирован курсор. Тип данных поля должен строго соответствовать по семантике используемой для извлечения значения функции (иначе генерируется исключение). Если аргумент < поле > не задан, то при вызове функции значение извлекается из того поля, на котором позиционирован курсор.

Если документ содержит несколько однотипных полей с одинаковыми именами, то значение извлекается из первого поля с указанным именем в заданном курсоре.

Возвращаемое значение

             
  1. Если извлекаемое из поля значение по типу данных совпадает с семантикой функции, то возвращается значение поля, в противном случае генерируется исключение и возвращается NULL-значение.

  2. В случае, когда извлекаемое из поля значение является NULL-значением (код BSON 0x0A), все функции возвращают NULL-значение без генерирования исключения.

Таблица 6. Тип данных возвращаемого значения

Функция

Тип данных возвращаемого значения

extractbool

BOOL

extractdouble

DOUBLE

extractint

INTEGER

extractbigint

BIGINT

extractstring

VARCHAR

extractbytes

BYTE

extractdate

DATE


Исключения

     

CURNOTOPEN         Обращение к неоткрытому курсору.

BADPARAM              Нарушение структуры BSON-пакета.

ERRTYPOPERAND  Несоответствие типа операнда.

Пример

{
  "i" : (int)"555",
  "dt" : (date)"01/05/1973 00:45:00",
  "str" : "Всем привет!",
  "0" : { 0x04 05 06 07 08 }
},
{
}

create or replace procedure pp1( in b1 varbyte( 4000 ) ) result varchar(1024)
declare
  var c1 cursor;
  var res varchar(128);
  var resdt date;
code
  res := "";
  open c1 for bson( b1 );
  res := res + tochar( extractbytes( c1, "0" ) ) + " ";
  res := res + tochar( extractint( c1, "i" ) ) + " ";
  res := res + tochar( extractdate( c1, "dt" )  );
  res := res + tochar( extractstring( c1, "str" )  );
  fetch c1 next;
  if outofcursor( c1 ) then
    res := "";
  endif;
  close c1;
  return res;
end;