INFO-离线开发调用Oracle存储过程
更新时间: 2025-06-19 16:04:47
阅读 558
功能说明
适用场景
本文档仅适用于在离线开发sql节点中使用Oracle存储过程说明,调用Oracle 存储过程,不支持新增、修改存储过程操作
前置要求
版本在 EasyData-V8.0-Update05 及以上
oracle 存储过程不支持call ide,支持BEGIN XXX END;
具体说明
1,全局修改az参数切换Oracle client模式,开启存储过程
1 azkaban 配置组做以下修改:
新增配置组 plugin.common.properties,该配置组新增配置 sql.need.remove.semicolon=false
修改配置组 global 中 oracle.sql.default.exec.mode,从 jdbc 改为 native
同步配置并重启 azkaban exec 服务
注意:azkaban修改以上配置之后,不能使用Oracle节点作为上游对下游进行参数传递
# native表示使用 client模式, jdbc表示使用jdbc模式
原因:oracle.sql.default.exec.mode 默认是jdbc时,在Oracle节点走的sql模式,会有结果数据输出,那么下游节点可以拿到当前节点输出值
# native表示使用 client模式, jdbc表示使用jdbc模式
oracle.sql.default.exec.mode修改为native时,在Oracle节点走的是脚本模式,此时没有结果输出,那么下游再通过数组方式来拿上游的值时,会报错outputs1's shape is [0], but expr value is outputs1[0]
2.仅修复某个任务的执行模式为Oracle client
1.不进行全局修改az参数,仅在任务添加参数
sql.need.remove.semicolon=false
job.oracle.sql.exec.mode=native(az全局修改的是插件的配置,在任务中增加此配置,可以控制此任务的执行模式,任务的优先级高于插件中的)
3.若已经全局修改了az配置,或用oracle存储过程场景较多修改了全局配置,使用oracle节点进行参数传递时,修复节点为jdbc模式
任务添加参数:
job.oracle.sql.exec.mode=jdbc
开发说明
由于 SQL IDE 开发页面与外部节点执行的调用方式不一致,两边正确调用需要有所调整,完整的开发流程如下:
1、开发人员在 SQL IDE 编写调用Oracle 存储过程的代码,测试执行成功后,在语句最后新增仅有 / 字符的行;
2、新增最后带有 / 字符的行后,离线开发选择执行该节点可以成功并实际调用,如果没有则会执行成功但实际未调用;
3、后续如果在 SQL IDE 修改代码,如果需要执行,则要去除 / 后才能执行
作者:李凌威
文档反馈
以上内容对您是否有帮助?