You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过ORDS替代EPG发布生成网页的PL/SQL存储过程?

如何通过ORDS发布生成HTML的PL/SQL存储过程(替代EPG)

针对Oracle 12.1数据库,要发布依赖htphtfowa包生成HTML内容的PL/SQL存储过程,无需REST/JSON模式,可按以下步骤操作:

1. 启用目标模式的ORDS访问

首先为存储过程所在的模式(示例中的ww2b_scan)启用ORDS支持:

BEGIN
  ORDS.ENABLE_SCHEMA(
    p_enabled => TRUE,
    p_schema => 'WW2B_SCAN',
    p_url_mapping_type => 'BASE_PATH',
    p_url_mapping_pattern => 'ww2b_scan',
    p_auto_rest_auth => FALSE
  );
  COMMIT;
END;
/
  • p_url_mapping_pattern对应ORDS路径中的模式映射部分(即示例链接里的/ords/ww2b_scan/),可自定义。
  • p_auto_rest_auth设为FALSE,保持和EPG类似的无认证访问(需认证可调整)。

2. 将存储过程发布为ORDS处理程序

由于该存储过程生成HTML而非JSON/REST响应,需创建PL/SQL类型的处理程序并指定响应类型:

BEGIN
  ORDS.CREATE_PROCEDURE(
    p_module_name => 'scan_html_procs', -- 自定义模块名,用于归类相关过程
    p_pattern => 'scan_menu', -- 对应URL中的过程路径(示例里的`/scan_menu`)
    p_procedure_name => 'SCAN_MENU', -- 数据库中的存储过程名
    p_source_type => 'PL/SQL',
    p_mime_type => 'text/html', -- 关键:指定响应为HTML类型
    p_arguments => 'p_mi_id:INTEGER' -- 存储过程参数,格式为`参数名:类型`
  );
  COMMIT;
END;
/
  • 多参数用逗号分隔,例如p_arg1:VARCHAR2,p_arg2:NUMBER
  • p_module_name用于管理同一类处理程序,后续可通过该名称维护。

3. 验证访问

完成配置后,即可通过示例格式的ORDS链接访问:
http://192.168.50.7:19090/ords/ww2b_scan/scan_menu?p_mi_id=104888
ORDS会调用目标存储过程,将htp/htf生成的HTML内容直接返回客户端,行为与EPG一致。

4. 额外配置(可选)

  • 若需限制访问,可通过ORDS.CREATE_ROLEORDS.ADD_ROLE_TO_MODULE为处理程序添加认证规则。
  • 存储过程依赖owa包会话状态(如owa_util)时,ORDS会自动维护会话上下文,与EPG兼容。

原EPG实现说明

原EPG通过DAD(示例中的scan)映射到模式,调用存储过程时直接输出htp生成的内容。ORDS逻辑类似,但通过PL/SQL API配置,无需修改HTTP服务器的DAD配置,更灵活易维护。

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

火山引擎 最新活动