mar*_*c_s 31 sql-server common-table-expression
有没有人设法在SQL Server的T-SQL中创建一个CTE,其中还包含一个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
Run Code Online (Sandbox Code Playgroud)
没用了:-((语法错误)
消息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
Run Code Online (Sandbox Code Playgroud)
得到了这个:
消息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
Run Code Online (Sandbox Code Playgroud)
得到了这个:
消息156,级别15,状态1,行4
关键字"WITH"附近的语法不正确.
消息319,级别15,状态1,行4
关键字'with'附近的语法不正确.如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则必须以分号终止先前的语句.
消息102,级别15,状态1,行21
''''附近的语法不正确.
那我该怎么办呢?
Gre*_*ech 48
使用逗号而不是第二个WITH,例如
WITH XMLNAMESPACES('http://schemas.myself.com/SomeSchema' as ns)
,CTEQuery AS
(
SELECT (list of fields)
FROM dbo.MyTable
WHERE (conditions)
)
SELECT * FROM CTEQuery
Run Code Online (Sandbox Code Playgroud)
如果您想要多个CTE表达式,则相同.您只需要指定WITH一次,然后所有其他WITH块只使用逗号而不是关键字.
| 归档时间: |
|
| 查看次数: |
27797 次 |
| 最近记录: |