问题描述
嗨,汤姆,
我有带有存储所有电子邮件id的列id的表格,现在我通过添加一个列作为用户id来更改表格。
我希望所有用户名都存储在userid列中。我已经编写了没有被编译的代码。
声明
类型aat是由pls_integer组成的电子邮件 % rowtype索引的表;
var aat;
开始
选择 * 从电子邮件批量收集到var;
forall i in 1 .. var.last
插入电子邮件 (userid) 从电子邮件中选择substr(var(i).id,1,instr(var(i).id,'@',1,1)-1);
结束;
/
我有带有存储所有电子邮件id的列id的表格,现在我通过添加一个列作为用户id来更改表格。
我希望所有用户名都存储在userid列中。我已经编写了没有被编译的代码。
声明
类型aat是由pls_integer组成的电子邮件 % rowtype索引的表;
var aat;
开始
选择 * 从电子邮件批量收集到var;
forall i in 1 .. var.last
插入电子邮件 (userid) 从电子邮件中选择substr(var(i).id,1,instr(var(i).id,'@',1,1)-1);
结束;
/
专家解答
感谢您为我们提供了一个livesql测试用例-使我们的生活更加轻松。
你非常接近-你实际上不需要PL/SQL来做到这一点,所以我提供了一个SQL解决方案和一个PL/SQL (如果你只是想了解forall)
你非常接近-你实际上不需要PL/SQL来做到这一点,所以我提供了一个SQL解决方案和一个PL/SQL (如果你只是想了解forall)
SQL> create table email (id varchar2(30)); Table created. SQL> insert into email values('gajanan1@gmail.com'); 1 row created. SQL> insert into email values('gajanan1@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> insert into email values('gajanana@gmail.com'); 1 row created. SQL> alter table email add userid varchar2(30); Table altered. SQL> SQL> SQL> desc email Name Null? Type ----------------------------------------------------------------------- -------- ------------------------------------------------ ID VARCHAR2(30) USERID VARCHAR2(30) SQL> SQL> update email 2 set userid=substr(id,1,instr(id,'@',1,1)-1); 55 rows updated. SQL> SQL> select * from email; ID USERID ------------------------------ ------------------------------ gajanan1@gmail.com gajanan1 gajanan1@gmail.com gajanan1 gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana gajanana@gmail.com gajanana 55 rows selected. SQL> SQL> declare 2 type aat is table of email%rowtype index by pls_integer; 3 var aat; 4 begin 5 select * bulk collect into var from email; 6 forall i in 1..var.last 7 update email set userid = substr(var(i).id,1,instr(var(i).id,'@',1,1)-1) 8 where id = var(i).id; 9 end; 10 / PL/SQL procedure successfully completed. SQL> SQL> SQL> SQL> SQL>复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
593次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
560次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
482次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
472次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
457次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
430次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
430次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
414次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
358次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
356次阅读
2025-04-15 14:48:05