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

使用Oracle SQLcl导出ORDS对象时p_module_id不能为空错误求解

报错根因

  1. 核心问题是版本不兼容:你使用的SQLcl 21.3版本的Liquidbase生成对象逻辑,和ORDS 19.2底层的ORDS_EXPORT存储过程参数规则不匹配。SQLcl调用导出API时,无法将你传入的模块名称正确转换为存储过程要求的p_module_id参数,即便是指定了-name参数也会因为取值失败导致空值报错。
  2. 次要可能原因:当前连接的数据库用户没有足够权限读取ORDS元数据,或者你指定的sigaREST模块不属于当前登录用户的资源,导致SQLcl无法获取到对应模块的ID值。

解决方法

  • 方案1:版本适配(最稳定)
    降级SQLcl到19.2.x版本,该版本的lb genobject逻辑和ORDS 19.2的导出API完全兼容,执行lb genobject -type ORDS -name siga即可正常导出目标模块。
  • 方案2:手动调用导出API(无需更换SQLcl版本)
    先查询目标模块的ID,执行查询语句:
    SELECT id FROM ords_metadata.ords_modules WHERE name = 'siga' AND owner = USER;
    
    拿到返回的模块ID后,直接调用导出存储过程:
    EXEC ords_metadata.ords_export.export_module(p_module_id => 替换为你查询到的模块ID);
    
  • 方案3:权限校验
    先确认当前用户具备ORDS_REST_USER角色,同时确认目标模块归属于当前用户,执行如下语句可查看当前用户所有可用的REST模块:
    SELECT name FROM ords_metadata.ords_modules WHERE owner = USER;
    
    如果列表中没有siga,需要切换到模块所属用户执行导出操作,或者给当前用户授予对应模块的访问权限。
  • 方案4:全量导出替代
    如果需要导出所有ORDS对象,可直接使用ORDS自带的导出工具,执行命令:
    ords export --db 你的数据库连接别名 --dir 本地导出目录路径
    

内容的提问来源于stack exchange,提问作者Salvador Arreola Rojas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:36:02