Извлечение информации из поля документа
Назначение
Предоставление типизированного значения заданного поля текущего документа 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).
Аргумент <поле> задает имя поля, значение которого должно быть получено, в
документе, на котором позиционирован курсор. Тип данных поля должен строго
соответствовать по семантике используемой для извлечения значения функции
(иначе генерируется исключение). Если аргумент <поле> не задан, то при вызове
функции значение извлекается из того поля, на котором позиционирован курсор.
Если документ содержит несколько однотипных полей с одинаковыми именами, то значение извлекается из первого поля с указанным именем в заданном курсоре.
Возвращаемое значение
-
Если извлекаемое из поля значение по типу данных совпадает с семантикой функции, то возвращается значение поля, в противном случае генерируется исключение и возвращается NULL-значение.
-
В случае, когда извлекаемое из поля значение является NULL-значением (код BSON 0x0A), все функции возвращают NULL-значение без генерирования исключения.
Функция | Тип данных возвращаемого значения |
|---|---|
|
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;