Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

xml и пространство имен в cte

$
0
0
Есть задача:
прочитать данные из xml, а затем эти данные записать в новый xml.
Для этого использую CTE но при формировании нового xml получаю ошибку:

DECLARE @xml XML
SELECT @xml = CONVERT(XML, BulkColumn, 2)
FROM   OPENROWSET(BULK '\\UBS_NT\FILES\xml\1.xml', SINGLE_BLOB) AS x

DECLARE @docHandle INT
EXEC sp_xml_preparedocument @docHandle OUTPUT,
     @xml 

--SELECT @xml  
;WITH cte AS (
SELECT inn AS inn_poluch,
       kpp AS kpp_poluch,
       NAME AS naimen_poluch,
       BankBIK,
       operatingAccountNumber AS acc_poluch,
       OrderDate AS date_trn,
       Amount,
       PaymentPurpose AS note_trn,
       [Year],
       [Month],
       AccountNumber AS 'ЛСИ'
FROM   OPENXML(
           @docHandle,
           'importNotificationsOfOrderExecution/NotificationOfOrderExecutionType',
           2
       )
       WITH (
           INN NVARCHAR(20) './RecipientInfo/PaymentInformation/RecipientINN',
           KPP NVARCHAR(20) './RecipientInfo/PaymentInformation/RecipientKPP',
           NAME NVARCHAR(200) 
           './RecipientInfo/PaymentInformation/PaymentRecipient',
           BankBIK NVARCHAR(20) './RecipientInfo/PaymentInformation/BankBIK',
           operatingAccountNumber NVARCHAR(20) 
           './RecipientInfo/PaymentInformation/operatingAccountNumber',
           OrderDate DATETIME './OrderInfo/OrderDate',
           Amount FLOAT './OrderInfo/Amount',
           PaymentPurpose NVARCHAR(250) './OrderInfo/PaymentPurpose',
           [YEAR] INT './OrderInfo/Year',
           [Month] INT './OrderInfo/Month',
           AccountNumber NVARCHAR(20) './OrderInfo/AccountNumber'
       )
)

WITH XMLNAMESPACES ('http://www.ubs/system/base' as u)
SELECT * FROM cte FOR XML PATH('u:UBS_TRANSFER')
       




Сообщение 156, уровень 15, состояние 1, строка 49
Incorrect syntax near the keyword 'WITH'.
Сообщение 319, уровень 15, состояние 1, строка 49
Incorrect syntax near the keyword 'with'. If this statement is a common table expression or an xmlnamespaces clause, the previous statement must be terminated with a semicolon.

Viewing all articles
Browse latest Browse all 7251

Trending Articles