Извлечение информации из вложенного документа
Назначение
Предоставление символьного значения заданного поля вложенного документа.
Синтаксис
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;