Teradata | BigQuery
--------------------------+------------------------------------
DECLARE EXIT HANDLER FOR | BEGIN ... EXCEPTION WHEN ERROR THEN
SQLEXCEPTION |
|
SIGNAL sqlstate | RAISE message
|
DECLARE CONTINUE HANDLER | Exception handlers that trigger for certain
FOR SQLSTATE VALUE 23505; | error conditions are not used by BigQuery
1条答案
按热度按时间zu0ti5jz1#
首先,使用
SQLCODE
不再建议。引用teradata文档:符合ansi标准
SQLCODE
不是ansi/isosql:2011-compliant.SQLCODE
在ansi/iso sql-92标准中已弃用,并且未在中定义sql:2011 standard. ansi/isosql委员会建议使用sqlstate编写新的应用程序(参见SQLSTATE
第91页)代替SQLCODE
.用于Map
SQLSTATE
要使用bigquery,请参阅google的迁移指南:错误条件处理程序
teradata在错误控制过程中对状态代码使用处理程序。在bigquery中,错误处理是主控制流的一个核心特性,类似于其他语言提供的功能
TRY ... CATCH
阻碍。这个
SQLSTATE
teradata中的变量类似于@@error
bigquery中的系统变量。在bigquery中,使用审计日志或INFORMATION_SCHEMA
意见。还有:
teradata错误代码和bigquery错误代码是不同的。bigquery提供了restapi,主要依赖于http状态码和详细的错误消息。
如果应用程序逻辑当前正在捕获以下错误,请尝试消除错误源,因为bigquery不会返回相同的错误代码。
SQLSTATE = '02000'
-“找不到行”SQLSTATE = '21000'
-“基数冲突(唯一索引)”SQLSTATE = '22000'
-“数据冲突(数据类型)”SQLSTATE = '23000'
-“约束冲突”很明显,这两者之间没有一一对应的关系
SQLSTATE
使用bigquery中的任何内容,因此需要根据上述信息重写一些代码。