如果是xmlnamespaces,则必须以分号结束前一个语句

时间:2017-10-13 14:18:57

标签: sql-server xml

我试图找到一个可以解决我的错误的解决方案,但是我无法在与此主题相关的线程上找到任何内容,而且肯定是我缺少的东西或者我傻到不能发现我自己。

我在MS SQL中有以下块 -

DECLARE @XMLFINAL VARCHAR(MAX)
SET @XMLFINAL=''
DECLARE @NUMBER NVARCHAR(100)
DECLARE @XML VARCHAR(MAX)

DECLARE Records CURSOR FAST_FORWARD FOR

SELECT TOP 1 GID FROM PurchasesDocumentsLines

OPEN Records
FETCH NEXT FROM Records INTO @NUMBER
WHILE @@FETCH_STATUS = 0 
BEGIN
SET @XML=''  
SET @XML=(

SELECT  (
WITH XMLNAMESPACES ('uri' as ns1)
SELECT 
ProductCode, OrderedQuantity

FROM PurchasesDocumentsLines WHERE GID=@NUMBER
FOR
XML RAW('EEE'), ELEMENTS
))

FETCH NEXT FROM Records INTO @NUMBER

SET @XMLFINAL=@XMLFINAL+@XML
END

CLOSE Records DEALLOCATE Records

我收到以下错误,但我不明白我错过了什么。我一直尝试使用分号(;)或逗号(,),因为我可以看到这里的先前同事的解决方案,但是。

  

第15行,第15行,第1行,第15行   关键字' WITH'附近的语法不正确。   消息319,第15级,状态1,第15行   关键字'与'附近的语法不正确。如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号结束前一个语句。

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:0)

DECLARE @XML VARCHAR(MAX)

;WITH XMLNAMESPACES ('uri' as ns1)
SELECT  @XML=(
SELECT 1 as one
FOR XML RAW('EEE'), ELEMENTS
)