RETURNING INTO语句介绍

thire
发布于 2022-9-20 11:30
浏览
0收藏

1. RETURNING INTO简介

RETURNING INTO语句是Oracle PL中的一种语法,它指定变量存储SQL语句的返回值。RETURNING INTO经常和delete,update,insert语句结合使用,举个例子如下:

UPDATE table_name SET expr1
RETURNING column_name INTO xxx

上面的例子中,update语句执行后,RETURNING语句将列名为column_name的列中的数值保存在xxx变量中。对于delte,update和insert语句,RETURNING INTO返回的内容有些不同:INSERT返回插入后的值;DELETE返回删除前的值;UPDATE返回更新后的值。
在oracle 12c官方描述中的RETURNING INTO语义如下:

RETURNING INTO语句介绍-开源基础软件社区

官方描述比较详细,但很多内容和PL相关,就不做具体的介绍了,感兴趣的同学可以参考官方文档。想要简单使用看懂上面的例子就可以了。

2. OceanBase中的RETURNING INTO

本文主要介绍在OceanBase的SQL层中实现的RETURNING INTO语法,这个语法是OceanBase独有的,可以在MySQL客户端使用,也可以供OceanBase的PL模块调用,使用它可以实现和Oracle的RETURNING INTO相同的功能。具体语法定义如下:

RETURNING column_list

column_list:
    column_expr [, column_expr] ...

其中column_expr表示和列名相关的表达式。该语法由RETURNING关键字和一系列和列名有关的表达式组成。该语法支持返回一行或者多行的数据,对于SQL客户端直接展示,对于PL需要相应类型的数据结构存储。

3. 使用示例

通过对表test的操作展示RETURNING INTO的效果。创建表的语句如下:

CREATE TABLE TEST(c1 int PRIMARY KEY, c2 int);

3.1 INSERT RETURNING使用示例

INSERT RETURNING单行的例子如下:

RETURNING INTO语句介绍-开源基础软件社区

INSERT RETURNING多行的例子如下:

RETURNING INTO语句介绍-开源基础软件社区

REPLACE RETURNING的例子如下:

RETURNING INTO语句介绍-开源基础软件社区

3.2 UPDATE RETURNING使用示例

UPDATE RETURNING的例子如下:

RETURNING INTO语句介绍-开源基础软件社区

3.3 DELETE RETURNING使用示例

DELETE RETURNING的例子如下:

RETURNING INTO语句介绍-开源基础软件社区

4. 总结

RETURNING INTO是PL模块一个重要的功能,它的功能类似DELETE/UPDATE/INSERT + SELECT语句,它使PL程序更加的高效和简洁,也使SQL由两条变成一条,性能得到提高。同时OceanBase的SQL也实现了自定义的RETURNING语句,这使OceanBase的SQL功能更加的强大。

本文转载自公众号OceanBase

分类
标签
已于2022-9-20 11:30:43修改
收藏
回复
举报
回复
    相关推荐