不能。RETURNING 子句需显式列出 ROWID 并绑定 UROWID 类型变量才能获取,否则报 ORA-00904;它提供原子性物理定位,比先查后更新更高效且安全。RETURNING 子句能直接拿到 ROWID 吗?不能。oracle 的 returning 子句支持返回列值(包括伪列如 rowid),但前提是该伪列在 dml 语句中“可见”且被显式列出——rowid 不是普通列,必须写进 returning 列表才能捕获。常见错误是只写 UPDATE ... RETURNING id INTO :id,却期望顺带拿到 ROWID;结果变量没声明、绑定失败,或运行时报 ORA-00904: "ROWID": invalid identifier——不是语法错,是没把它当返回项声明。必须显式写 RETURNING ROWID INTO :rid,且宿主变量类型得是 UROWID(PL/SQL)或对应数据库驱动的 rowid 类型(如 Python cx_Oracle 的 cx_Oracle.ROWID)单行更新时,ROWID 是最轻量级的物理定位符,比查主键再二次查询快一个 I/O注意:ROWID 在表移动、分区拆分、段压缩后会失效,仅适合“更新后立刻用”的短生命周期场景UPDATE ... RETURNING ROWID 的最小可行写法以 PL/SQL 块为例,省略异常处理和变量声明细节,聚焦核心结构:DECLARE v_rid UROWID;BEGIN UPDATE employees SET salary = salary * 1.1 WHERE employee_id = 100 RETURNING ROWID INTO v_rid; DBMS_OUTPUT.PUT_LINE('New ROWID: ' || v_rid);END;关键点:RETURNING ROWID 必须紧接在 WHERE 条件后,不能加 AND 或子查询干扰行数判断如果 WHERE 匹配 0 行,v_rid 保持 NULL,不会报错;匹配多行则抛 ORA-01422: exact fetch returns more than requested number of rows想安全处理多行?改用 BULK COLLECT INTO + RETURNING ROWID,但那就不是“单行”场景了绑定变量传参时 ROWID 类型容易踩的坑用 JDBC、Python 或 Node.js 调用时,ROWID 不是字符串——驱动通常要求显式指定类型,否则可能截断或解析失败。 Tellers AI Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。
如何利用RETURNING获取ROWID_更新单行后快速定位物理地址
张小明
前端开发工程师
7系列FPGA IOB:从管脚配置到时序收敛的实战指南
1. 7系列FPGA IOB基础解析 第一次接触7系列FPGA的IOB时,我完全被各种专业术语搞晕了。后来在实际项目中踩过几次坑才明白,IOB其实就是FPGA与外部世界沟通的"门卫"。想象一下,CLB(可配置逻辑块)是FPGA内部的计…
C++ STL案例2——员工分组
写在前面:⭐如果本篇博文对你有帮助,那就 点赞 关注 收藏 一下吧!1.案例描述●公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作●员工信息有:姓名 工资组成&…
读者写者问题与读写锁 [ 系统加餐 ]
读者写者问题读者写者问题它和生产者消费者模型一样,都是多线程同步与互斥的经典策略,从名称就能看出,该模型核心围绕读者与写者两种角色展开。生活中这类场景十分常见:比如我们发布博客,发布后很少修改,主…
从PID调参到根轨迹:一个电机控制工程师的实战避坑笔记
从PID调参到根轨迹:一个电机控制工程师的实战避坑笔记 作为一名在工业自动化领域摸爬滚打多年的电机控制工程师,我深知PID参数调试的痛点和挑战。每当面对一个全新的电机控制系统,传统的试凑法不仅耗时耗力,还常常陷入"调好一…
LeetCode 2958. 最多 K 个重复元素的最长子数组【不定长滑窗】1535
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…