我试图在存储过程中定义一个结构数组,目的是从 SELECT 语句收集结果,该语句将返回多行结构。比如:
DECLARE my_array ARRAY<STRUCT<STRING,STRING,STRING>> DEFAULT NULL;
SET my_array = (SELECT ARRAY (
SELECT AS STRUCT id, type, name FROM `mytable` where company=0));
但是 BigQuery 失败并出现错误:
验证过程主体时出错(将 OPTIONS(strict_mode=false) 添加到 抑制):不支持的变量类型: 阵列
>
根据文档,BigQuery 支持结构数组。那么为什么会出现这个错误呢?感谢任何帮助。
谢谢。
BigQuery 确实支持
ARRAY of STRUCT
,但不支持在 BigQuery 的存储过程中声明 DEFAULT NULL
。根据此文档,数组的默认值不能是NULL
或包含任何 NULL 元素。因此,您不能用 ARRAY<STRUCT<STRING, STRING, STRING\>\>
来声明 DEFAULT NULL
。
作为解决方法,您可以尝试使用
```
数组
```