SQLScript:不允许标量类型

Posted

技术标签:

【中文标题】SQLScript:不允许标量类型【英文标题】:SQLScript: scalar type is not allowed 【发布时间】:2016-12-05 10:35:27 【问题描述】:

我有以下 sql 命令:

SELECT DFT(weighted, 32768 ORDER BY rel_id).REAL as four FROM :fith

此函数返回一个单元格中包含 32769 个元素的数组。

现在我想使用unnest函数来拆分结果。因此我需要将结果保存在一个变量中。

以下命令抛出错误:

my_array = SELECT DFT(weighted, 32768 ORDER BY rel_id).REAL as four FROM :fith;
===>    invalid datatype: Column FOUR of table variable MY_ARRAY has an unsupported data type (ARRAY)

好吧...在将我的 my_array 声明为数组后,我收到此错误:

    declare my_array double array;
    my_array = SELECT DFT(weighted, 32768 ORDER BY rel_id).REAL as four FROM :fith;
==>scalar type is not allowed: MY_ARRAY:

我为什么要绕着这样的弯路做这件事? 文档说:

UNNEST 函数不能在 FROM 子句中直接引用 SELECT 语句

怎么了?我现在能做什么?

【问题讨论】:

【参考方案1】:

问题很可能是您试图将 SQL 结果放入数组中。 但是,您可以将 SQL 结果存储在本地表变量中。

在你的情况下,我会创建一个光标并循环遍历结果集

在循环体中,您可以使用自定义拆分字符串函数拆分单元格内容,如线程HANA: Split string?中所述

【讨论】:

以上是关于SQLScript:不允许标量类型的主要内容,如果未能解决你的问题,请参考以下文章

PHP7:标量返回类型声明不应该接受整数吗?

lscript.ld 链接器脚本

雪花不支持的子查询类型无法在 UDF 标量中评估

雪花标量 UDF 返回 无法评估不支持的子查询类型

Python数据分析基础-2Python标量类型

存储弱类型变量的方法