有人成功创建了一个包含 WITH XMLNAMESPACES
声明的 SQL Server T-SQL 中的公共表表达式(CTE)吗?
似乎两个 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'附近的语法不正确。
消息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
Incorrect syntax near ';'。
接着我试着将 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
我尝试过这个:
Msg 156,Level 15,State 1,Line 4
关键字 'WITH' 附近的语法不正确。
Msg 319,Level 15,State 1,Line 4
关键字 'with' 附近的语法不正确。如果此语句是通用表达式、xmlnamespaces 子句或更改跟踪上下文子句,则必须使用分号终止前面的语句。
Msg 102,Level 15,State 1,Line 21
附近的语法不正确 ')'。
那么我该怎么做呢?