Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Microsoft SQL Server для профессионалов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

5.3.2 Синтаксис используемых хранимых процедур и функций

Хранимые процедуры sp_xml_preparedocument и sp_xml_removedocument в SQL Server 2000, функция OPENXML

Синтаксис sp_xml_preparedocument выглядит так:

sp_xml_preparedocument hdoc OUTPUT [, xmltext] [, xpath_namespaces] 

где

  • hdoc - указатель (handle) на создаваемую структуру дерева XML (потом будет использоваться в OPENXML и sp_xml_removedocument);
  • xmltext - собственно передаваемый код документа XML;
  • xpath_namespaces - необязательный параметр, который позволяет отфильтровать ненужные данные документа XML в соответствии со спецификацией XPath.

Пример части кода myProcImportXml с использованием sp_xml_preparedocument:

CREATE PROC myProcImportXml @doc NText 
AS
DECLARE @idoc int
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

Синтаксис функции OPENXML выглядит так:

OPENXML(idoc int [in],rowpattern nvarchar[in],[flags byte[in]]) [WITH (SchemaDeclaration | TableName)]

где

  • idoc - указатель на структуру дерева XML (то, что возвращалось sp_xml_preparedocument как hdoc);
  • rowpattern - запрос в формате XPath, который определяет, что будет возвращаться из документа и позволяет фильтровать ненужные данные. Для того, чтобы ничего не фильтровать, достаточно указать просто имя корневого элемента документа XML, например, 'Order';
  • flags - битовая маска, которая позволяет определить, как хранятся данные столбцов генерируемого ROWSET в документе XML - как атрибуты (по умолчанию, им же соответствует значение 1) или элементы (значение 2);
  • SchemaDeclaration - возможность определить, структуру таблицы и какой атрибут/элемент пойдет в какой столбец таблицы
  • Table - возможность определить, структура какой таблицы может быть использована для формирования ROWSET.

Можно явно указать создаваемую структуру ROWSET при помощи ключевого слова WITH:

SELECT * FROM OPENXML(@idoc, 'Order', 1) WITH (orderno integer, [date] datetime)

Для вставки можно "упаковать" запрос с OPENXML в INSERT (для вставки в существующую таблицу) или SELECT INTO (для вставки в новую таблицу), например:

INSERT xml_orders SELECT * FROM OPENXML(@idoc, 'Order', 1) WITH (orderno integer, [date] datetime)

Синтаксис sp_xml_removedocument очень прост:

sp_xml_removedocument hdoc

где hdoc - возвращаемый sp_xml_preparedocumemt указатель на иерархическую структуру подготовленного к загрузке документа XML. Настоятельно рекомендуется не забывать использовать sp_xml_removedocument, потому что в противном случае утечка оперативной памяти может получиться существенной.

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 

 
© 2004-2008, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru