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