在Azure SQL数据仓库中,返回表类型的函数是否可以替代?

时间:2018-12-05 12:21:47

标签: azure-sqldw

在常规SQL Server数据库中,我具有返回表类型的功能,

CREATE FUNCTION [dbo].[GetSomeStuff] 
(   
    @UserID INT
)
RETURNS TABLE 
AS
RETURN 
(...

该函数从各种存储过程中调用。我想将存储过程连同此功能一起迁移到Azure SQL数据仓库,但是不支持TABLE类型。

有人能告诉我该怎么做,而不是在这里返回一个表类型的函数吗?

1 个答案:

答案 0 :(得分:1)

是的,不支持表类型。

您可以使用CTE,这是在我的DW上运行的简单查询:

SHELL := /bin/bash

target: 
    sed -e '1i\'$$'\n''line to be added' file

也就是说,我经常发现CTE在复杂查询中的表现非常差,并且更喜欢将CTE单独实现,以便我可以控制其结构和分布。

我认为物化是您问题的正确答案。考虑使用在存储过程中创建的临时表来代替函数调用。 ASDW临时表是会话范围的,并保留在创建它们的过程之外。

https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-temporary