You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google BigQuery存储过程中结构体数组定义报错求助

问题原因与解决方案

错误根源

BigQuery存储过程的变量类型不支持匿名结构体数组(即ARRAY<STRUCT<STRING,STRING,STRING>>这种未给字段命名的定义)。虽然BigQuery查询中允许临时使用匿名结构体,但存储过程变量必须明确指定结构体的每个字段名称,确保类型与查询返回结果完全匹配。

修正后的代码

将变量声明中的匿名结构体改为带字段名的定义,与查询返回的结构体字段一一对应:

DECLARE my_array ARRAY<STRUCT<id STRING, type STRING, name STRING>> DEFAULT NULL;
SET my_array = ARRAY(
  SELECT AS STRUCT id, type, name FROM `mytable` where company=0
);

额外优化

SET语句中外层的SELECT可以省略,直接使用ARRAY()构造器即可完成数组赋值,简化代码逻辑。

完整存储过程示例

CREATE OR REPLACE PROCEDURE `your-project.your-dataset.test-procedure`()
BEGIN
  DECLARE my_array ARRAY<STRUCT<id STRING, type STRING, name STRING>> DEFAULT NULL;
  SET my_array = ARRAY(
    SELECT AS STRUCT id, type, name FROM `mytable` WHERE company=0
  );
  
  -- 验证结果(可选)
  SELECT * FROM UNNEST(my_array);
END;

内容的提问来源于stack exchange,提问作者user2255299

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:44:51