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

BigQuery存储过程:如何声明可在EXCEPTION块引用的变量?

在BigQuery存储过程的EXCEPTION块中引用变量的解决方案

可以在EXCEPTION块中引用上方声明的变量,你的问题源于两个语法细节错误:

1. 错误类型参数不合法

BigQuery的EXCEPTION语句不支持WHEN ERROR这种模糊的错误类型,需要使用具体错误类型(比如除零错误对应的DIVISION_BY_ZERO),或者用WHEN OTHERS捕获所有类型的错误。

2. 可选:调整代码结构明确作用域

虽然同层BEGIN块中声明的变量可以被EXCEPTION访问,但将可能出错的逻辑包裹在内层BEGIN块中,能让代码结构更清晰,避免作用域混淆。

修正后的代码示例

方式一:捕获具体错误类型

CREATE PROCEDURE test.my_sp_1()
BEGIN
  DECLARE var1 INT64 DEFAULT 1;
  SELECT 1/0;
EXCEPTION WHEN DIVISION_BY_ZERO THEN
  SELECT var1;
END;

方式二:捕获所有错误并使用内层块

CREATE PROCEDURE test.my_sp_1()
BEGIN
  DECLARE var1 INT64 DEFAULT 1;
  BEGIN
    SELECT 1/0;
  EXCEPTION WHEN OTHERS THEN
    SELECT var1;
  END;
END;

调用修正后的存储过程,就能正常在EXCEPTION块中访问var1变量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:10:34