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