Azure 数据仓库中的“Cursor”和“FOR XML”子句

问题描述

在 Azure 数据仓库中创建存储过程时,我在“Cursor”和“FOR XML”上遇到了一些错误。所以想知道 Azure 数据仓库是否支持它们。如果不是,那么有哪些选择。

此处附上带有错误信息图片的示例代码。

enter image description here

enter image description here

解决方法

作为 per the documentation,Azure Synapse 专用 SQL 池(以前称为 Azure SQL 数据仓库)不支持 FOR XML 或游标。对于游标,要么将它们转换为使用受支持的 WHILE 循环,要么重构代码以使用基于集合的方法。另一种选择是使用外部的东西,比如 Azure 数据工厂或 Synapse Pipelines,并使用 For Each 循环。另一种选择是使用附近的 Azure SQL DB 进行一些预处理。您应该知道 Azure Synapse Analytics 的 MPP 体系结构不适合这种基于行的处理,您应该记住它是一个大数据平台,用于处理大量数据、数百万、数十亿行和基于集合的数据方法应该是首选。

如果您只是使用 FOR XML 来执行那个低俗的字符串连接技巧,那么您应该使用 STRING_AGG 来代替 Synapse 中完全支持的。有关最近的示例,请参阅 this answer。如果您实际上是在生成 XML,那么您将需要找到替代方法,例如附近的 Azure SQL DB。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...