Извлечение информации из вложенного документа
Назначение
Предоставление символьного значения заданного поля вложенного документа.
Синтаксис
extractvalue (< курсор >[,< поле >]);
< курсор >::= имя курсорной переменной;
< поле >::=символьный англоязычный литерал в кодировке ASCII.
Описание
В случае указания параметра < поле > имя курсорной переменной в аргументе < курсор >
должно ссылаться на позиционированный в заданном курсоре вложенный документ.
Аргумент < поле > должен задавать имя поля во вложенном документе (если поле, на
котором позиционирован курсор, не является вложенным документом, генерируется исключение).
Если аргумент < поле > задан, осуществляется поиск первого поля с таким именем во вложенном документе.
Если аргумент < поле > не задан, возвращается значение текущего поля, на котором позиционирован курсор.
Возвращаемое значение
-
Возвращается значение типа VARCHAR, полученное в результате извлечения значения указанного поля из вложенного документа.
-
Если поле с заданным именем не найдено, курсор не открыт или не позиционирован на поле типа «документ», то генерируется исключение и возвращается 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;