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

如何按命名参数调用BigQuery存储过程?

BigQuery存储过程命名参数调用解决方案

问题说明

你定义了如下BigQuery存储过程:

CREATE OR REPLACE PROCEDURE proc_name( param_1 INT64, param_2 INT64, param_3 DATE )
BEGIN
  // CODE
END

按顺序传参调用(如CALL proc_name(1,1,'2022-11-23'))正常,但尝试按命名参数调用时报错Query error: Unrecognized name: param_2 at [2:3],报错的调用语句为:

CALL proc_name( param_2 = 10 param_3 = '2022-11-23' param_1 = 5 )

可行方案

BigQuery支持命名参数调用存储过程,你只需修正语法即可,另外也可以通过STRUCT参数实现更灵活的参数传递:

方案1:使用官方支持的命名参数语法

BigQuery要求命名参数使用参数名 => 参数值的格式,且参数之间必须用逗号分隔——你的错误是误用了=而非=>,同时缺少参数分隔的逗号。

正确调用示例:

CALL proc_name( param_2 => 10, param_3 => '2022-11-23', param_1 => 5 );

该方式无需修改原有存储过程定义,直接按任意顺序传递命名参数即可。

方案2:使用STRUCT类型统一传递参数

如果需要更清晰的参数分组或更灵活的可选参数控制,可以重新定义存储过程,将参数封装为STRUCT类型:

重新定义存储过程:

CREATE OR REPLACE PROCEDURE proc_name( params STRUCT<param_1 INT64, param_2 INT64, param_3 DATE> )
BEGIN
  -- 内部使用参数时通过 params.param_1、params.param_2 访问
  -- 示例逻辑:
  SELECT params.param_1, params.param_2, params.param_3;
END;

调用时按名称指定STRUCT的字段,顺序可任意:

CALL proc_name( STRUCT(10 AS param_2, '2022-11-23' AS param_3, 5 AS param_1) );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:35:15