Oracle 游标更新与删除数据:TaoToken 统一 Key 下的 PL/SQL 实操大纲
1. Oracle 游标更新与删除数据踩坑记为什么你的 WHERE CURRENT OF 总报错先说结论Oracle 里用显式游标配合WHERE CURRENT OF批量改删数据是后端和 DBA 日常绕不开的一招。它能做到边遍历边定位当前行比再拼一个主键条件更省事也比UPDATE ... WHERE全表扫更可控。但很多人第一次写就翻车——要么忘了FOR UPDATE要么WHERE CURRENT OF找不到游标要么提交时机没想清楚最后锁表锁到业务报警。这篇就围绕 Oracle 游标更新与删除数据这个场景把可复制的游标声明、WHERE CURRENT OF用法、提交与回滚配置讲透再附上执行前后行数校验和异常回滚验证步骤。适合需要批量改删数据的后端开发和 DBA尤其是刚接手历史数据清洗、薪资调整、状态批量流转这类任务的同学。我试过在一个几十万行的员工表上做批量调薪一开始图省事直接UPDATE emp SET sal sal 100 WHERE sal 2000结果没控制好事务粒度锁了一大片行业务侧查询直接排队。后来改成显式游标逐行处理、分批提交才把影响压下来。所以这篇不只是语法更是怎么写得稳。另外提一句写这类脚本时我习惯把模型调用和数据库操作分开管理。像 TaoToken 这种统一 Key 的方式能把多个模型的接入收敛成一套凭证省得在脚本里到处塞不同的 Key。下面会顺带讲怎么把它接进你的开发流程但重点还是 PL/SQL 本身。核心检索词先摆出来Oracle 游标更新与删除数据靠的是FOR UPDATE加WHERE CURRENT OF这对组合。FOR UPDATE在打开游标时锁定结果集对应的行WHERE CURRENT OF则告诉 Oracle就改/删我刚 fetch 出来的那一行。少了任何一个语句都跑不通。2. TaoToken 前置准备统一 Key 怎么配进 Oracle 开发环境在正式写游标之前先把工具链理顺。很多团队现在会用 AI 辅助生成 PL/SQL 片段、审查 SQL 风险或者用 coding agent 帮忙改存储过程。这时候如果每个模型都要单独配 Key管理起来很乱。TaoToken 的思路是提供一个统一入口把模型对话、API 调用、coding plan 这些能力收敛到一套凭证下。你需要先拿到 API Key。访问官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后进控制台创建 Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。API 的基础地址是 https://taotoken.net/api 注意这个不带 UTM 参数配置时直接用。如果你只是想让 AI 帮你解释一段游标逻辑、生成测试数据用模型对话就行https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。如果你要长期做数据库脚本开发、让 agent 反复改 PL/SQL那更适合 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 遇到配置问题先翻这里。这里要强调一个原则TaoToken 是帮你管理模型调用的入口不是数据库工具也不替代 SQL Developer、DBeaver 或 sqlplus。你的游标脚本最终还是要在 Oracle 客户端里执行。把 Key 配好是为了让 AI 辅助环节更顺而不是让它去连你的生产库。生产库操作永远走正规客户端和权限控制。配置时通常涉及三件套Base URL、API Key、Model ID。Base URL 填https://taotoken.net/apiKey 填你创建的那串Model ID 按你选的模型填。这三样在 Cline、CC Switch、Codex 这类工具里都要对齐缺一个就连不上。下面第三节会给一段可复制的配置片段。3. 可复制配置游标声明、WHERE CURRENT OF 与 settings 片段先给最核心的游标更新模板。注意FOR UPDATE必须写在游标定义里WHERE CURRENT OF必须引用同一个游标名。DECLARE CURSOR emp_cursor IS SELECT ename, sal FROM emp FOR UPDATE; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; BEGIN OPEN emp_cursor; LOOP FETCH emp_cursor INTO v_ename, v_sal; EXIT WHEN emp_cursor%NOTFOUND; IF v_sal 2000 THEN UPDATE emp SET sal sal 100 WHERE CURRENT OF emp_cursor; END IF; END LOOP; CLOSE emp_cursor; COMMIT; END; /删除版本同理把UPDATE换成DELETEDECLARE CURSOR emp_cursor IS SELECT ename, sal, deptno FROM emp FOR UPDATE; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; v_deptno emp.deptno%TYPE; BEGIN OPEN emp_cursor; LOOP FETCH emp_cursor INTO v_ename, v_sal, v_deptno; EXIT WHEN emp_cursor%NOTFOUND; IF v_deptno 30 THEN DELETE FROM emp WHERE CURRENT OF emp_cursor; END IF; END LOOP; CLOSE emp_cursor; COMMIT; END; /关键点FOR UPDATE会锁定查询到的行直到你COMMIT或ROLLBACK。所以事务粒度一定要想清楚。数据量大时别一次性全锁建议分批提交。如果你用 Cline 或类似工具做 AI 辅助开发配置片段大概长这样JSON 形式路径按你本地实际改{ baseUrl: https://taotoken.net/api, apiKey: 你的_TAOTOKEN_KEY, modelId: 你选择的模型ID }Codex 的auth.json也是三件套对齐{ base_url: https://taotoken.net/api, api_key: 你的_TAOTOKEN_KEY, model: 你选择的模型ID }CC Switch 里同样填 Base URL、Key、Model ID 三项。这三件套任何一项写错都会在调用时报 401 或连接失败。配好后建议先用模型对话页发一条测试请求确认凭证有效再去写游标脚本。再补一个分批提交的写法避免大事务锁表DECLARE CURSOR emp_cursor IS SELECT ename, sal FROM emp FOR UPDATE; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; v_cnt NUMBER : 0; BEGIN OPEN emp_cursor; LOOP FETCH emp_cursor INTO v_ename, v_sal; EXIT WHEN emp_cursor%NOTFOUND; IF v_sal 2000 THEN UPDATE emp SET sal sal 100 WHERE CURRENT OF emp_cursor; v_cnt : v_cnt 1; END IF; IF MOD(v_cnt, 500) 0 THEN COMMIT; END IF; END LOOP; CLOSE emp_cursor; COMMIT; END; /每 500 行提交一次既控制锁范围又不会因为一次大回滚把 undo 撑爆。这个数字按你表的大小和业务容忍度调。4. 验证请求与成功结果行数校验和异常回滚实测写完脚本不能直接在生产跑先做行数校验。执行前先记下目标行数SELECT COUNT(*) FROM emp WHERE sal 2000;假设结果是 120。执行游标更新后再查一次SELECT COUNT(*) FROM emp WHERE sal 2000;如果调薪后这些行工资都涨到 2000 以上这个数应该变成 0 或明显减少。同时校验总行数没变SELECT COUNT(*) FROM emp;更新操作不该改变总行数如果变了说明脚本逻辑有问题。删除操作则相反总行数应该减少减少量等于你预期删除的行数。异常回滚验证更关键。故意在脚本里制造一个错误比如除零看事务是否整体回滚DECLARE CURSOR emp_cursor IS SELECT ename, sal FROM emp FOR UPDATE; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; v_tmp NUMBER; BEGIN OPEN emp_cursor; LOOP FETCH emp_cursor INTO v_ename, v_sal; EXIT WHEN emp_cursor%NOTFOUND; IF v_sal 2000 THEN UPDATE emp SET sal sal 100 WHERE CURRENT OF emp_cursor; v_tmp : 1 / 0; -- 故意触发异常 END IF; END LOOP; CLOSE emp_cursor; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE; END; /跑完后查SELECT COUNT(*) FROM emp WHERE sal 2000;如果还是原来的 120说明回滚生效没有半途提交的脏数据。这一步能验证你的异常处理分支是否真的兜住了。成功结果长这样脚本执行无报错DBMS_OUTPUT或你加的日志显示处理行数提交后查询结果符合预期且没有残留锁。可以用下面这句查当前会话的锁情况SELECT sid, type, id1, id2, lmode, request, block FROM v$lock WHERE type TX;如果脚本结束后还有大量 TX 锁没释放说明有事务没提交或没回滚赶紧排查。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth这一节把真实会撞上的报错列出来对照着查。ORA-01002: fetch out of sequence。这个最常见通常是你在FOR UPDATE游标里做了COMMIT提交后游标位置失效再FETCH就报这个。解决办法是把提交放到循环外或者用分批提交时重新打开游标。别在 fetch 循环中间随便 commit。ORA-01410: invalid ROWID或WHERE CURRENT OF找不到行。多半是游标定义没带FOR UPDATE或者你引用的游标名和定义的不一致。检查游标声明和WHERE CURRENT OF后面的名字是否完全一样。401 Unauthorized。这是 TaoToken 侧的凭证问题不是 Oracle 的。检查你的 API Key 是否填对、是否过期Base URL 是否是https://taotoken.net/api。三件套里任何一项错都会 401。去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 重新确认 Key。local proxy failed。一般是本地网络或代理配置问题检查你的工具是否误设了代理或者 Base URL 写成了带路径的错误地址。确认用的是https://taotoken.net/api不要多加斜杠或后缀。reading choices 相关报错。这类通常出现在模型返回结构解析阶段说明请求发出去了但响应格式不符合预期。检查 Model ID 是否填对是否选了一个当前不可用的模型。换一个模型 ID 再试。OAuth 相关报错。如果你用的是需要 OAuth 流程的工具检查授权是否完成、token 是否过期。有些工具会缓存旧 token清掉重新授权。锁等待超时 ORA-30006 或 enq: TX - row lock contention。说明你的游标锁住了别的会话要改的行。要么缩短事务、分批提交要么调整业务执行时间窗口。生产上批量改删一定要避开高峰。排查顺序建议先看 Oracle 报错码确认是 SQL 层还是凭证层SQL 层看游标定义和提交时机凭证层看三件套。两边分开查别混在一起。6. 语义一致 CTA把游标脚本和模型调用都管起来回到开头那个问题Oracle 游标更新与删除数据核心就是FOR UPDATE加WHERE CURRENT OF配上合理的事务粒度。脚本本身不难难的是锁控制、提交时机和异常回滚。把这三样做扎实批量改删就不会变成生产事故。如果你在写这类脚本时需要 AI 辅助生成、审查或解释 PL/SQL建议把模型调用统一到一套 Key 下管理。模型对话入口在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 适合临时问语法、查报错。长期做数据库脚本开发和 agent 迭代用 Coding Plan 更合适https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。接入细节和配置示例翻文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。最后留个实操建议任何批量改删脚本先在测试库跑一遍行数校验和异常回滚验证确认无误再上生产。生产执行前先备份目标表或者至少记下执行前的行数和关键字段快照。游标锁行这件事宁可分批慢一点也别一次性锁死整张表。

相关新闻

芯片测试核心:ATE设备原理、S参数与量产实战解析

芯片测试核心:ATE设备原理、S参数与量产实战解析

芯片测试这个叫法,放在行业外很容易被理解成“把芯片拿过来量一量”。但真正跑过产线的人都知道,这个环节是整个半导体产业链里最讲究工程取舍的部分之一。ATE(Automated Test Equipment,自动测试设备)作为负责“电性能…

2026/10/3 6:55:43 阅读更多 →
RISC-V电源管理实战:WFI、SBI CPPC与Linux cpufreq协同解析

RISC-V电源管理实战:WFI、SBI CPPC与Linux cpufreq协同解析

前阵子调一块 RISC-V 开发板的功耗,最让我头疼的并不是手上那块芯片有多冷门,而是整个电源管理链路被拆成了三块互不相干的代码:内核里的 cpuidle 负责让 CPU 发呆待机,cpufreq 负责让 CPU 跑得快,SBI 固件则夹在中间充…

2026/10/3 6:55:43 阅读更多 →
RISC-V电源管理链路实战:WFI、SBI CPPC与cpufreq协同调优

RISC-V电源管理链路实战:WFI、SBI CPPC与cpufreq协同调优

上个月调一块 RISC-V 开发板,主线内核,系统起来后什么都不干,光挂着串口终端,功耗却比预期高了将近三成。摸了一下散热片,烫手。查到最后发现,问题根本不在某一个点:WFI 空闲路径没走对&#xf…

2026/10/3 6:55:43 阅读更多 →

最新新闻

Java学习五 面向对象高级5 内部类4-匿名内部类(重点)

Java学习五 面向对象高级5 内部类4-匿名内部类(重点)

1.例子:接口:测试类:总结:

2026/10/3 7:33:09 阅读更多 →
从IEEE Xplore数据库顶级检索频次看工学热门领域

从IEEE Xplore数据库顶级检索频次看工学热门领域

从IEEE Xplore数据库顶级检索频次看工学热门领域 此截图来自:IEEE Xplore 分析说明:工学的热门领域排序(降序) 数据科学图像处理机器学习深度学习天线人工智能(AI)云计算物联网(IoT)超大规模集成电路(VLSI)网络安全区块链声纳 其…

2026/10/3 7:33:09 阅读更多 →
海外焊装线如何联调?从越南海防案例看 PLC、HMI 与机器人协同

海外焊装线如何联调?从越南海防案例看 PLC、HMI 与机器人协同

设备到了海外工厂,单台机器人可以运动,PLC 也能读到信号,整条产线却未必具备连续运行的条件。多设备协同还需要回答三个问题:谁允许下一步动作、异常后如何恢复、交接时用什么证明已经完成。 拓思官网的海防汽车车身车间案例涉及…

2026/10/3 7:33:09 阅读更多 →
餐饮 SaaS 优惠券系统架构演进(一):从“券配置”到“用户权益”——领域模型与数据建模复盘

餐饮 SaaS 优惠券系统架构演进(一):从“券配置”到“用户权益”——领域模型与数据建模复盘

本文基于真实后端代码做工程复盘。 业务标识、账号、域名、门店/商户数据均做脱敏;类名与通用表名用于说明真实技术结构。本文重点不是教你“建一张 coupon 表”,而是解释:为什么优惠券一旦进入生产系统,就必须区分模板、范围、用…

2026/10/3 7:33:09 阅读更多 →
【车间调度】基于卷积神经网络的柔性作业车间调度问题的两阶段算法附Matlab代码

【车间调度】基于卷积神经网络的柔性作业车间调度问题的两阶段算法附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研&#xff0c…

2026/10/3 7:33:08 阅读更多 →
单视频三维实时重构支撑口岸突发事件平战快速切换

单视频三维实时重构支撑口岸突发事件平战快速切换

一、方案背景陆路口岸、港区码头、界河限定管控区是国门安全核心节点,常态业务涵盖通关查验、集装箱装卸、船舶靠离泊、口岸巡逻值守,核心目标为有序通关、日常边界监测、隐患排查;一旦发生偷渡闯关、人员非法登轮、围网破损越界、危险品夹带…

2026/10/3 7:32:08 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →