大数跨境
0
0

高效数据操作:ORACLE RETURNING子句让你的DML如虎添翼

高效数据操作:ORACLE RETURNING子句让你的DML如虎添翼 老苏畅谈运维
2025-10-08
3
导读:在日常的数据库操作中,我们经常需要在执行DML语句(INSERT、UPDATE和DELETE)之后,获取被操作


在日常的数据库操作中,我们经常需要在执行DML语句(INSERTUPDATEDELETE)之后,获取被操作数据的信息。常规的做法是在DML执行前后执行SELECT语句来查询数据。但这样做不仅增加了代码量,还可能影响性能。

幸运的是,Oracle数据库提供了一个强大而简洁的特性:RETURNING INTO子句。它允许我们在同一条DML语句中直接返回受影响行的列值,极大地提升了代码的效率和可读性。

RETURNING INTO 子句简介

RETURNING INTO子句可以附加在DML语句之后,用于将受影响数据行的列值存储到指定变量中。具体来说:

  • INSERT操作:返回插入后的值
  • UPDATE操作:返回更新后的值
  • DELETE操作:返回删除前的值

这一特性既可以在SQL*Plus中使用,也可以在PL/SQL中使用,下面通过实际示例来展示其用法。

SQL*Plus 中的使用示例

INSERT 操作

VARIABLE info varchar2(40);
insert into scott.dept values (50'TECHNICAL''FUJIAN'
returning dname || ':' || loc into :info;
commit;
print :info;

执行结果:

INFO
----------------------------------------
TECHNICAL:FUJIAN

UPDATE 操作

VARIABLE info varchar2(40);
update scott.dept set deptno = 51 where dname = 'TECHNICAL' 
returning dname || ':' || loc into :info;
commit;
print :info;

执行结果:

INFO
----------------------------------------
TECHNICAL:FUJIAN

DELETE 操作

VARIABLE info varchar2(40);
delete scott.dept where dname = 'TECHNICAL' 
returning dname || ':' || loc into :info;
commit;
print :info;

执行结果:

INFO
----------------------------------------
TECHNICAL:FUJIAN

PL/SQL 中的使用示例

INSERT 操作

set serveroutput on;
declare
  row_id rowid;
  info   varchar2(40);
begin
  insert into scott.dept values (50'TECHNICAL''FUJIAN')
  returning rowid, dname || ':' || to_char(deptno) || ':' || loc 
  into row_id, info;
  commit;
  dbms_output.put_line(info);
end;
/

执行结果:

TECHNICAL:50:FUJIAN

PL/SQL 过程已成功完成。

UPDATE 操作

declare
  row_id rowid;
  info   varchar2(40);
begin
  update scott.dept set deptno = 51 where dname = 'TECHNICAL'
  returning rowid, dname || ':' || loc into row_id, info;
  commit;
  dbms_output.put_line(info);  
end;
/

执行结果:

TECHNICAL:FUJIAN

PL/SQL 过程已成功完成。

DELETE 操作

declare
  row_id rowid;
  info   varchar2(40);
begin
  delete scott.dept where dname = 'TECHNICAL'
  returning rowid, dname || ':' || loc into row_id, info;
  commit;
  dbms_output.put_line(info);  
end;
/

执行结果:

TECHNICAL:FUJIAN

PL/SQL 过程已成功完成。

总结

Oracle的RETURNING INTO子句是一个极其实用的特性,它能够:

  1. 减少数据库往返次数:将DML操作和结果获取合并为一步
  2. 提高代码简洁性:避免了额外的SELECT查询语句
  3. 提升程序性能:减少了数据库调用开销
  4. 增强数据一致性:确保获取的数据与DML操作完全对应

无论是简单的SQL*Plus脚本还是复杂的PL/SQL程序,RETURNING INTO子句都能让你的数据库操作更加高效和优雅。下次当你在Oracle中执行DML操作时,不妨尝试使用这一强大功能,体验它带来的便利和效率提升!

关注我学习更多的数据库知识!

【声明】内容源于网络
0
0
老苏畅谈运维
1234
内容 122
粉丝 0
老苏畅谈运维 1234
总阅读756
粉丝0
内容122