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

Назначение

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

Синтаксис

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

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

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

Описание

В случае указания параметра < поле > имя курсорной переменной в аргументе < курсор > должно ссылаться на позиционированный в заданном курсоре вложенный документ.

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

Если аргумент < поле > задан, осуществляется поиск первого поля с таким именем во вложенном документе.

Если аргумент < поле > не задан, возвращается значение текущего поля, на котором позиционирован курсор.

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

  1. Возвращается значение типа VARCHAR, полученное в результате извлечения значения указанного поля из вложенного документа.

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

Пример

create or replace procedure pp1( in b1 varbyte( 4000 ) ) result varchar(1024)
declare
  var c1, c2 cursor;
  var res varchar(128);
  var resdt date;
code
  res := "";
  open c1 for bson( b1 );
  while not outofcursor( c1 ) loop
    open c2 for c1;
    while not outofcursor( c2 ) loop
      res := res + extractvalue( c2 ) + " ";
      fetch c2 next;
    endloop;
    close c2;
    fetch c1 next;
  endloop;
  close c1;
  return res;
end;