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
相关产品推荐
相关产品推荐

