【问题标题】:Splitter Function in Azure SQL Data WarehouseAzure SQL 数据仓库中的拆分器函数
【发布时间】:2020-05-28 13:29:46
【问题描述】:

我正在尝试通过引用代码here 来构建一个接受多值参数的函数。但是,我在创建它时遇到错误。这里有什么问题?

CREATE FUNCTION [dbo].[func_CommaDelimitedString] (@val nvarchar(100))
RETURNS @clublist TABLE (clubname nvarchar(55))
BEGIN
    DECLARE @x int = 1
    DECLARE @y int = CHARINDEX(',', @val)
                    
    WHILE @x < LEN(@val) + 1
    BEGIN
        IF @y = 0
            BEGIN
                SET @y = LEN(@val) + 1
            END
        INSERT INTO @clublist (clubname) VALUES (SUBSTRING(@val, @x, @y - @x))
        SET @x = @y + 1
        SET @y = CHARINDEX(',', @val, @x)
    END
    RETURN
END

消息 103010,第 16 级,状态 1,第 1 行 第 13 行,第 15 列的解析错误:“@clublist”附近的语法不正确。

我的环境:Microsoft Azure SQL 数据仓库 - 10.0.10887.0 Jan 23 2020 07:36:54 版权所有 (c) Microsoft Corporation

【问题讨论】:

  • 好的,我已经从那个链接添加了实际代码。
  • 创建它@DaleK!
  • 我的意思是我想在我创建的存储过程中使用这个函数。我不想将单个值传递给 SP 中的参数,而是传递多值。
  • 我正在使用 Azure SQL DW,但它无法按上述方式工作。

标签: sql-server azure azure-sqldw azure-sql-reporting


【解决方案1】:

Azure Synapse Analytics SQL 池(又名 Azure SQL DW)不支持用户定义的表值函数,仅支持用户定义的标量值函数。见CREATE FUNCTION (SQL Data Warehouse)

但它确实支持string_split,所以你不应该需要这个特定的功能。

【讨论】:

  • 谢谢!这有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 2016-02-06
  • 1970-01-01
  • 2021-03-04
相关资源
最近更新 更多