Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Янин В.Л. "Новгородские акты XII-XV Хронологический комментарий" (История)

Майринк Г. "Белый доминиканец " (Художественная литература)

Хусаинов А. "Голоса вещей. Альманах том 2" (Художественная литература)

Петров Г.И. "Отлучение Льва Толстого " (Художественная литература)

Хусаинов А. "Голоса вещей. Альманах том 1 " (Художественная литература)
Реклама

Microsoft SQL server. Реализация и обслуживание Учебный курс - Microsoft press

Microsoft press Microsoft SQL server. Реализация и обслуживание Учебный курс — Microsoft Press, 2007. — 766 c.
Предыдущая << 1 .. 116 117 118 119 120 121 < 122 > 123 124 125 126 127 128 .. 343 >> Следующая

,History.[StartDate] ’Employee/@StartDate’
, DATEDIFF(year, History. [StartDate], GetDateO) ' Employee/@YearsInRole’ FROM HumanResources.EmployeeDepartmentHistory History WHERE Department.DepartmentID = History.DepartmentID AND History.EndDate IS NULL ORDER BY History.[StartDate]
FOR XML PATH(’ '), TYPE ) 'Department/Employees’
FROM HumanResources.Department ORDER BY Department.[DepartmentID]
FOR XML PATH (' '),R00T('Departments’), TYPE)
250 Управление XML-данными
Глава 8
Если вывести содержимое переменной @Х, частичный результат будет следующим:
<Departments>
department id="2" name="Tool Design">
<Employees>
<Employee id="5" StartDate="1998-01-11T00:00:00" YearsInRole=”8" /> <Employee id="4” StartDate="2000-07-01T00:00:00" YearsInRole=”6" /> <Employee id="263" StartDate="2001-01-05T00:00:00” YearsInRole=”5” /> <Employee id="265" StartDate="2001-01-23T00:00:00” YearsInRole=”5" /> </Employees>
</Department>
</Departments>
Для демонстрации метода modifyQ и ключевых слов XML DML рассмотрим небольшую последовательность сценариев. Допустим, вам поручено создать новый отдел для работы с заказчиками. Поскольку работа с заказчиками очень важна, в этот отдел войдут все сотрудники, работающие в компании более восьми лет. В этом выражении XML DML используется ключевое слово insert с оператором before для добавления нового узла Department:
SET @X.modify(’
insert department id=" 17" name="Customer Service”><Employees/x/Department> before (/Departments/Department)[1]')
В следующем выражении XML DML используется ключевое слово insert с оператором into для добавления всех сотрудников, работающих в компании более восьми лет, в созданный отдел:
SET @Х.modify('
insert /Departments/Department/Employees/Employee[@YearsInRole>8] into (/Departments/Department[@id=17]/Employees)[1]’)
В следующем выражении XML DML modifyQ ключевое слово insert с оператором into позволяет изменить XML-структуру путем добавления нового атрибута bonus для сотрудников, работающих в компании дольше всех, как поощрение при переходе в новый отдел:
SET @Х.modify(’
insert attribute bonus {"true”}
into (/Departments/Department[@id=17]/Employees/Employee[@YearsInRole = max(/Departments/Department[@id=17]/Employees/*/@YearsInRole)])[1]')
Если вывести содержимое переменной @Х, частичный результат будет следующим:
<Departments>
department id=”17" name="Customer Service”>
<Employees>
<Employee id=”3" StartDate="1997-12-12T00:00:00" YearsInRole="9" /> <Employee id="2" StartDate="1997-02-26T00:00:00" YearsInRole=”9” /> <Employee bonus=”true" id="1" StartDate=”1996-07-31T00:00:00" YearsInRole="10" />
Занятие 4
Изменение XML-данных 251
</Employees>
</Department>
<Departments>
Теперь, допустим, вам нужно удалить узлы Employee с ID равным 1, 2 и 3 из их предыдущих отделов (7, 4, 1) с помощью ключевого слова delete:
SET @Х.modifу('delete /Departments/Department[@id=7]/Employees/Employee[@id=1]') SET @X.modify('delete /Departments/Department[@id=4]/Employees/Employee[@id=2]’) SET @X.modify('delete /Departments/Department[@id=1]/Employees/Employee[@id=3]’)
Также руководство решило, что новый отдел не должен называться Customer Service. Чтобы изменить название отдела на Customer Assistance, воспользуйтесь ключевым словом replace value of:
SET @X. modify('
replace value of (/Departments/Department[@id=17]/@name)[1] with "Customer Assistance"’)
Контрольный вопрос
1. Какие три ключевых слова в XML DML определены в SQL Server 2005?
2. Как воспользоваться методом modify() в инструкции Transact-SQL UPDATE?
Ответы на контрольные вопросы
1. Три ключевых слова XML DML в SQL Server 2005 — insert, replace value of и delete.
2. В следующем примере кода показано, как воспользоваться методом modifyQ в инструкции Transact-SQL UPDATE:
UPDATE UniversalLog SET LogRecord.modify(’
replace value of (logRecord/error/module)[1] with "BusinessLayerComponent" ')
WHERE ID = 5
Использование пакетов обновлений SQLXML
Пакеты обновлений — это фрагменты XML, в которых объявляется исходное и текущее представление XML-структуры. Сравнивая исходное и текущее представления XML-дан-ных, SQLXML создает команды Transact-SQL для синхронизации изменений из XML-данных в реляционные данные в базе данных.
Аннотированные XSD-схемы могут поддерживать пакеты обновлений, поэтому SQLXML осведомлен о сопоставлениях между XML-схемой и реляционной схемой. Если аннотированной XSD-схемы нет, будет предпринята попытка неявного сопоставления посредством пакетов обновлений в SQLXML, с применением имен узлов как имен таблиц и столбцов.
252 Управление XML-данными
Глава 8
Пакет обновлений состоит из трех разделов:
? Объявление пространства имен
Следующее пространство имен объявляет зарезервированные ключевые слова пакетов обновлений: xmlns:updg="urn:schemas-microsoft-com:xml-updategram".
? Дополнительный раздел header
Как и в XML-представлениях, дополнительный раздел header позволяет объявлять входные параметры в пакете обновлений.
? Один или несколько разделов sync
Каждый раздел sync объявляет область действия транзакции. Все операции в каждом разделе sync выполняются как атомарная операция: они либо все выполняются успешно, либо завершаются ошибкой. Каждый раздел sync может быть связан с отдельной аннотированной XSD-схемой с помощью атрибута mapping-schema. Раздел sync содержит любое количество разделов before и after (они должны быть объявлены парами). Раздел before представляет исходную версию XML-данных; раздел after — текущую.
Предыдущая << 1 .. 116 117 118 119 120 121 < 122 > 123 124 125 126 127 128 .. 343 >> Следующая