RETURNING语句
来源:互联网 发布:明星代言页游 知乎 编辑:程序博客网 时间:2024/06/06 08:31
1.DELETE的情况,RETURNING返回的肯定是DELETE之前的结果;
INSERT的情况,RETURNING返回的一定是INSERT之后的结果。
UPDATE的情况,RETURNING返回的一定是UPDATE之后的结果。
2.RETURNING语句似乎和RETURN通用。(即两个可以相互替换)
3.INSERT INTO VALUES语句支持RETURNING语句,而INSERT INTO SELECT语句不支持。
4.MERGE语句不支持RETURNING语句。
问题:
使用UPDATE语句的时候,RETURNING得到的结果是UPDATE之前的结果还是UPDATE之后的结果?
例:
显然,UPDATE操作的RETURNING语句是返回UPDATE操作之后的结果。
顺便总结几个RETURNING操作相关的问题:
1.RETURNING语句似乎和RETURN通用。
2.RETURNING语句也可以使用SQLPLUS的变量,这样,RETURNING语句不一定非要用在PL/SQL语句中。
3.INSERT INTO VALUES语句支持RETURNING语句,而INSERT INTO SELECT语句不支持。MERGE语句不支持RETURNING语句。
INSERT的情况,RETURNING返回的一定是INSERT之后的结果。
UPDATE的情况,RETURNING返回的一定是UPDATE之后的结果。
2.RETURNING语句似乎和RETURN通用。(即两个可以相互替换)
3.INSERT INTO VALUES语句支持RETURNING语句,而INSERT INTO SELECT语句不支持。
4.MERGE语句不支持RETURNING语句。
ORACLE的DML语句中可以指定RETURNING语句。RETURNING语句的使用在很多情况下可以简化PL/SQL编程。
在使用RETURNING子句是应注意以下几点限制:
1.不能与DML语句和远程对象一起使用;
2.不能检索LONG类型信息;
3.当通过视图向基表中插入数据时,只能与单基表视图一起使用。
问题:
使用UPDATE语句的时候,RETURNING得到的结果是UPDATE之前的结果还是UPDATE之后的结果?
例:
SQL> CREATE TABLE T (ID NUMBER, NAME VARCHAR2(30));表已创建。
SQL> SET SERVEROUT ONSQL> DECLARE V_NAME VARCHAR2(30); BEGIN INSERT INTO T VALUES (1, 'YANGTK') RETURNING NAME INTO V_NAME; DBMS_OUTPUT.PUT_LINE('INSERT: ' || V_NAME); V_NAME := NULL; UPDATE T SET NAME = 'YTK' RETURNING NAME INTO V_NAME; DBMS_OUTPUT.PUT_LINE('UPDATE: ' || V_NAME); V_NAME := NULL; DELETE T RETURNING NAME INTO V_NAME; DBMS_OUTPUT.PUT_LINE('DELETE: ' || V_NAME); END; /INSERT: YANGTKUPDATE: YTKDELETE: YTKPL/SQL 过程已成功完成。
显然,UPDATE操作的RETURNING语句是返回UPDATE操作之后的结果。
顺便总结几个RETURNING操作相关的问题:
1.RETURNING语句似乎和RETURN通用。
SQL> SET SERVEROUT ONSQL> DECLARE V_NAME VARCHAR2(30); BEGIN INSERT INTO T VALUES (1, 'YANGTK') RETURN NAME INTO V_NAME; DBMS_OUTPUT.PUT_LINE('INSERT: ' || V_NAME); V_NAME := NULL; UPDATE T SET NAME = 'YTK' RETURN NAME INTO V_NAME; DBMS_OUTPUT.PUT_LINE('UPDATE: ' || V_NAME); V_NAME := NULL; DELETE T RETURN NAME INTO V_NAME; DBMS_OUTPUT.PUT_LINE('DELETE: ' || V_NAME); END; /INSERT: YANGTKUPDATE: YTKDELETE: YTKPL/SQL 过程已成功完成。
2.RETURNING语句也可以使用SQLPLUS的变量,这样,RETURNING语句不一定非要用在PL/SQL语句中。
SQL> VAR V_NAME VARCHAR2(30)SQL> INSERT INTO T VALUES (1, 'YANGTK') RETURNING NAME INTO :V_NAME;已创建 1 行。SQL> PRINT V_NAMEV_NAME--------------------------------YANGTKSQL> UPDATE T SET NAME = 'YTK' RETURNING NAME INTO :V_NAME;已更新 1 行。SQL> PRINT V_NAMEV_NAME--------------------------------YTKSQL> DELETE T RETURNING NAME INTO :V_NAME;已删除 1 行。SQL> PRINT V_NAMEV_NAME--------------------------------YTK
3.INSERT INTO VALUES语句支持RETURNING语句,而INSERT INTO SELECT语句不支持。MERGE语句不支持RETURNING语句。
SQL> MERGE INTO T USING (SELECT * FROM T) T1 ON (T.ID = T1.ID) WHEN MATCHED THEN UPDATE SET NAME = T1.NAME WHEN NOT MATCHED THEN INSERT VALUES (T1.ID, T1.NAME) RETURNING NAME INTO :V_NAME; RETURNING NAME INTO :V_NAME*第 5 行出现错误:ORA-00933: SQL 命令未正确结束
SQL> INSERT INTO T SELECT * FROM T RETURNING NAME INTO :V_NAME;INSERT INTO T SELECT * FROM T RETURNING NAME INTO :V_NAME*第 1 行出现错误:ORA-00933: SQL 命令未正确结束
1 0
- RETURNING语句
- RETURNING语句
- oracle动态语句returning
- DML语句的Returning...Into...
- RETURNING
- returning
- Oracle中Returning into语句的总结
- Oracle中Returning语句的几个小问题
- ORA-06547: INSERT, UPDATE 或 DELETE 语句必须使用 RETURNING 子句
- plsql RETURNING
- Returning Home
- returning 用法
- PSQL RETURNING
- DML RETURNING INTO
- Stored Procedures: Returning Data
- Returning Into子句研究
- DML RETURNING INTO Clause
- Returning function模式
- chrome 文件上传路径问题
- 如何让APP在最短的时间内上线
- CV_EXPORT定义的作用,lib及dll的区别
- win7 vs2015环境 GDAL2.0.1 64位 编译解决
- ServletContextListener 的应用
- RETURNING语句
- Linux 正则表达式 字符汇整
- 在MFC和ATL工程中加入GIF动画(CPictureEx,CPitureExWnd)
- redis实现増删改、查询过滤功能
- 应用内存优化之OnLowMemory&OnTrimMemory
- android通过图片名获取资源
- 谈谈安卓程序入口问题
- Unable to add App ID because the '10' App ID limit in '7' days has been exceeded
- Android面试必背题