APEX中如何调用PACKAGE实现表数据插入并关联页面输入项
APEX页面调用PACKAGE存储过程替换原INSERT操作方案
代码替换方法
你原来在APEX页面的INSERT逻辑可以直接替换为如下写法,注意将YOUR_PACKAGE_NAME替换为公司实际创建的PACKAGE名称:
DECLARE -- 声明变量接收存储过程返回的执行结果 LN_RESULTADO NUMBER; BEGIN -- 保留原有的支付方式ID非空校验逻辑 IF :P903_PYMT_MTH_ID IS NOT NULL THEN -- 调用PACKAGE中的P_NEW存储过程,按参数绑定页面项 YOUR_PACKAGE_NAME.P_NEW( PN_PYMT_MTH_ID => :P903_PYMT_MTH_ID, PV_PYMT_MTH_TP => :P903_PYMT_MTH_TYPE, PV_PYMT_MTH_NM => :P903_PYMT_MTH_NM, PV_USR_NM => :P903_USR_NM, PN_RESULTADO => LN_RESULTADO ); -- 可根据公司定义的返回值规则做后续提示处理 -- 示例逻辑:返回1代表ID已存在,抛出APEX页面提示 IF LN_RESULTADO = 1 THEN apex_error.add_error( p_message => '该支付方式ID已存在,请勿重复提交', p_display_location => apex_error.c_inline_in_notification ); END IF; END IF; END;
参数对应关系说明
存储过程参数和APEX页面项的绑定规则如下:
PN_PYMT_MTH_ID(数字入参):对应页面项:P903_PYMT_MTH_IDPV_PYMT_MTH_TP(字符串入参):对应页面项:P903_PYMT_MTH_TYPEPV_PYMT_MTH_NM(字符串入参):对应页面项:P903_PYMT_MTH_NMPV_USR_NM(字符串入参):对应页面项:P903_USR_NMPN_RESULTADO(数字出参):接收存储过程执行结果,可用来判断插入是否成功、是否重复提交等状态
注意事项
- 原INSERT逻辑中的
CRT_DT_TM、MOD_DT_TM(sysdate赋值)以及LAST_TXN_DT字段已经在PACKAGE存储过程内部处理,无需额外传参 - APEX页面处理默认自动提交事务,不需要额外写
COMMIT语句,建议不要在PACKAGE内部写提交逻辑,由APEX统一管控事务更符合低代码平台设计规范 - 如果业务需要把页面的
:P903_LAST_TXN_DT值传入存储过程,可以联系后端同事在P_NEW的入参列表中增加对应参数,再按上述规则绑定页面项即可
内容的提问来源于stack exchange,提问作者José Mora
相关产品推荐
相关产品推荐

