Oracle APEX编辑用户表单数据获取报错ORA-01722求助
ORA-01722无效数字错误排查与编辑用户资料页面示例
错误原因
- 核心问题是数据类型不匹配:
:APP_USER(或v('APP_USER'))存储的是登录用户名(字符串类型),而user表的user_id是数字类型。执行where user_id = :APP_USER时,Oracle会尝试将字符串类型的:APP_USER转换为数字,若用户名不是纯数字,就会触发ORA-01722错误。
解决方案
- 优先检查
user表结构,确认是否存在存储登录用户名的字段(比如username),替换查询条件:select user_id, fname, lname, email into :P15_USER_ID, :P15_FNAME, :P15_LNAME, :P15_EMAIL FROM user where username = :APP_USER; -- 用存储用户名的字段作为条件 - 若
user表确实通过user_id关联登录用户,需确认:APP_USER是否实际传递数字型用户ID。若用户名本身是纯数字,可强制转换类型:select user_id, fname, lname, email into :P15_USER_ID, :P15_FNAME, :P15_LNAME, :P15_EMAIL FROM user where user_id = to_number(:APP_USER);
编辑用户资料页面参考示例(APEX标准流程)
- 创建页面时选择Form on a Table or View,绑定
user表,勾选需编辑的字段(fname、lname、email等) - 在页面Before Header流程中添加PL/SQL代码(以username关联为例):
select user_id, fname, lname, email into :P15_USER_ID, :P15_FNAME, :P15_LNAME, :P15_EMAIL FROM user where username = :APP_USER; - 设置页面项
P15_USER_ID为只读,禁止修改主键 - 添加Submit按钮,关联自动生成的DML更新流程;添加Cancel按钮,跳转至主页或用户列表页
内容的提问来源于stack exchange,提问作者rkive
相关产品推荐
相关产品推荐

