有没有人设法在 SQL Server 的 T-SQL 中创建一个包含WITH XMLNAMESPACES
声明的 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
得到了这个:
消息 102,级别 15,状态 1,第 2 行
';' 附近的语法不正确。
然后我尝试将其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 行
关键字“WITH”附近的语法不正确。
消息 319,级别 15,状态 1,第 4 行
关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。
消息 102,级别 15,状态 1,第 21 行
')' 附近的语法不正确。
那么我该怎么做呢?