如何在Oracle APEX数据加载流程中使用页面项作为外键?
Oracle APEX数据加载中绑定会话页面项的正确方法
以下是几种可行的解决方式,能避免ORA-01008错误,同时将会话中的P10_ID_SALE值批量插入到采购数据的id_sale列:
使用PL/SQL表达式直接引用页面项
在数据加载流程的“添加列”设置里,将列类型改为PL/SQL表达式,表达式直接写:P10_ID_SALE即可,无需嵌套select :P10_ID_SALE from dual;。PL/SQL表达式类型会自动识别并绑定会话中的页面项值,不会触发未绑定变量的错误。在数据加载的转换步骤设置固定值
若通过数据加载向导创建流程,进入“转换”步骤,找到对应id_sale的列,选择“设置固定值”选项,输入:P10_ID_SALE。这种方式会在数据转换阶段,直接将页面项的值赋值给每一行的目标列。自定义插入语句时直接引用页面项
如果使用自定义插入逻辑,在INSERT语句中直接用:P10_ID_SALE作为id_sale列的值,示例如下:INSERT INTO purchase_items (id_sale, item_name, price) VALUES (:P10_ID_SALE, :UPLOADED_ITEM_NAME, :UPLOADED_PRICE)APEX会自动解析这个绑定变量,替换为会话中
P10_ID_SALE的实际值。
原方法报错的原因是:数据加载的“SQL表达式”类型不会自动处理:P10_ID_SALE这类会话绑定变量,导致数据库认为存在未绑定的变量;而改用PL/SQL表达式或直接在转换/插入逻辑中引用,就能正确识别并绑定页面项的值。
内容的提问来源于stack exchange,提问作者user3564550
相关产品推荐
相关产品推荐

