SQL:2003 и XML
Строки
Тип ROW позволяет поместить целую строку с ценной информацией в одно лишь отдельное поле строки таблицы. Тип ROW создается как часть описания таблицы следующим образом:
CREATE TABLE CONTACTINFO ( | |
Name | CHARACTER (30) |
Phone | ROW (Home CHAR (13), Work CHAR (13)) |
Теперь воспользуемся следующей XML-схемой для преобразования этого типа:
<xsd:complexType Name='ROW.1'> <xsd:annotation> <xsd:appinfo> <sqlxml:sqltype kind='ROW' <sqlxml:field name='Home' mappedType='CHAR_13'/> <sqlxml:field name='Work' mappedType='CHAR_13'/> </sqlxml:sqltype> <xsd:appinfo> </xsd:annotation> <xsd:sequence> <xsd:element Name='Home' nillable='true' Type='CHAR_13'/> <xsd:element Name='Work' nillable='true' Type='CHAR_13'/> </xsd:sequence> </xsd:complexType>
Такое преобразование создает для столбца следующий XML-тип:
<Phone> <Home>(888)555-llll</Home> <Work>(888)555-1212</Work> </Phone>
Массивы
Если вы хотите поместить в одно поле больше одного элемента, вместо типа ROW воспользуйтесь типом Array. Для этого примера в таблице CONTACTINFO объявим столбец Phone как массив, а затем создадим XML-схему, которая будет преобразовывать массив в XML:
Например:
CREATE TABLE CONTACTINFO ( | |
Name | CHARACTER (30) |
Phone | CHARACTER (13) ARRAY [4] |
); |