Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Параметризованный запрос в OPENXML  [new]
Rickkk
Member

Откуда:
Сообщений: 41
Здравствуйте! Запрос вида:

DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customers CustomerID="VINET" ContactName="Paul Henriot">
   <Orders CustomerID="VINET" EmployeeID="5" OrderDate=
           "1996-07-04T00:00:00">
      <Order_x0020_Details OrderID="10248" ProductID="11" Quantity="12"/>
      <Order_x0020_Details OrderID="10248" ProductID="42" Quantity="10"/>
   </Orders>
</Customers>
<Customers CustomerID="LILAS" ContactName="Carlos Gonzlez">
   <Orders CustomerID="LILAS" EmployeeID="3" OrderDate=
           "1996-08-16T00:00:00">
      <Order_x0020_Details OrderID="10283" ProductID="72" Quantity="3"/>
   </Orders>
</Customers>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- SELECT statement that uses the OPENXML rowset provider.
DECLARE @STR nvarchar(max)
SET @STR='SELECT    *
FROM  OPENXML ('+CAST(@idoc AS varchar(50))+', ''/ROOT/Customers'')'
PRINT(@STR)
EXEC(@STR)
EXEC sp_xml_removedocument @idoc


При выполнении @STR выдает ошибку - Неправильный синтаксис около конструкции "5". "Чистый" запрос, типа
SELECT    * FROM  OPENXML (@idoc, '/ROOT/Customers')
выполняется без проблем. Однако мне нужна
возможность параметризации, чтобы указывать свои узлы вместо Customers, после ROOT. Проверял -
переменная @idoc инициализируется. В чем тут может быть ошибка?
5 сен 11, 15:35    [11229128]     Ответить | Цитировать Сообщить модератору
 Re: Параметризованный запрос в OPENXML  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Rickkk,

DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customers CustomerID="VINET" ContactName="Paul Henriot">
   <Orders CustomerID="VINET" EmployeeID="5" OrderDate=
           "1996-07-04T00:00:00">
      <Order_x0020_Details OrderID="10248" ProductID="11" Quantity="12"/>
      <Order_x0020_Details OrderID="10248" ProductID="42" Quantity="10"/>
   </Orders>
</Customers>
<Customers CustomerID="LILAS" ContactName="Carlos Gonzlez">
   <Orders CustomerID="LILAS" EmployeeID="3" OrderDate=
           "1996-08-16T00:00:00">
      <Order_x0020_Details OrderID="10283" ProductID="72" Quantity="3"/>
   </Orders>
</Customers>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- SELECT statement that uses the OPENXML rowset provider.
DECLARE @STR nvarchar(max)
SET @STR='SELECT    * FROM  OPENXML (@idoc, ''/ROOT/Customers'')'
PRINT(@STR)
exec sp_executesql  @STR, N'@idoc int', @idoc = @idoc
EXEC sp_xml_removedocument @idoc
?
5 сен 11, 15:52    [11229276]     Ответить | Цитировать Сообщить модератору
 Re: Параметризованный запрос в OPENXML  [new]
Rickkk
Member

Откуда:
Сообщений: 41
Огромное спасибо! Наконец-то заработало )
5 сен 11, 16:04    [11229451]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить