Объедините CTE «WITH» и «WITH XMLNAMESPACES…» в SQL Server

Удалось ли кому-нибудь создать CTE в T-SQL SQL Server, который также включает WITH XMLNAMESPACES ?

Похоже, что оба ключевых слова WITH настаивают на том, чтобы быть «первыми в пакете T-SQL», и это на самом деле не работает ....

Я пробовал:

WITH XMLNAMESPACES('http://schemas.myself.com/SomeSchema' as ns)
WITH CTEQuery AS
(
SELECT (list of fields)
    FROM dbo.MyTable
    WHERE (conditions)
)
SELECT * FROM CTEQuery

Не сработало :-( (синтаксические ошибки)

Сообщение 156, уровень 15, состояние 1, строка 2
Неправильный синтаксис рядом с ключевым словом 'WITH'.
{{1 }} Сообщение 319, уровень 15, состояние 1, строка 2
Неправильный синтаксис рядом с ключевым словом 'with'. Если этот оператор является общим табличным выражением , Предложение xmlnamespaces или предложение изменения контекста отслеживания, предыдущий оператор должен заканчиваться точкой с запятой .

Поэтому я попытался добавить второе WITH с точкой с запятой:

WITH XMLNAMESPACES('http://schemas.myself.com/SomeSchema' as ns)
;WITH CTEQuery AS
(
SELECT (list of fields)
    FROM dbo.MyTable
    WHERE (conditions)
)
SELECT * FROM CTEQuery

и получил следующее:

Msg 102, Level 15, State 1, Line 2
Неправильный синтаксис рядом с ';'.

, а затем Я знаю d поместив WITH XMLNAMESPACES в CTE:

WITH CTEQuery AS
(
   WITH XMLNAMESPACES('http://schemas.myself.com/SomeSchema' as ns)
   SELECT (list of fields)
      FROM dbo.MyTable
      WHERE (conditions)
)
SELECT * FROM CTEQuery

и получил следующее:

Сообщение 156, уровень 15, состояние 1, строка 4
Неправильный синтаксис рядом с ключевым словом { {1}} "С".
Сообщение 319, уровень 15, состояние 1, строка 4
Неправильный синтаксис рядом с ключевым словом "with". Если этот оператор является общим табличным выражением , предложением xmlnamespaces или предложением контекста отслеживания изменения , предыдущий оператор должен завершаться выражением {{1 }} точка с запятой.
Сообщение 102, уровень 15, состояние 1, строка 21
Неправильный синтаксис рядом с ')'.

Так как же мне это сделать ??

31
задан marc_s 10 September 2010 в 13:58
поделиться