返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Oracle在DML语句中使用returing into子句
  • 859
分享到

Oracle在DML语句中使用returing into子句

2024-04-02 19:04:59 859人浏览 独家记忆
摘要

一、概述: oracle的DML语句中可以指定RETURNING语句。使用起来也很简单,和SELECT INTO语句没有多大区别。RETURNING语句的使用在很多情况下可以

一、概述:

oracle的DML语句中可以指定RETURNING语句。使用起来也很简单,和SELECT INTO语句没有多大区别。RETURNING语句的使用在很多情况下可以简化PL/sql编程

  • INSERT操作: 返回INSERT之后的结果;
  • UPDATE操作: 返回UPDATE操作之后的结果。
  • DELETE操作: 返回DELETE之前的结果;

INSERT INTO SELECT和MERGE语句不支持RETURNING语句。RETURNING和return通用。

二、当插入使用序列生成主键值的数据时,能返回此主键值。

DECLARE
  l_id t1.id%TYPE;
BEGIN
  INSERT INTO t1 VALUES (t1_seq.nextval, 'FOUR')
  RETURNING id INTO l_id;
  COMMIT;

  DBMS_OUTPUT.put_line('ID=' || l_id);
END;

三、更新和删除语句。

DECLARE
  l_id t1.id%TYPE;
BEGIN
  UPDATE t1  SET    description = description  WHERE  description = 'FOUR'
  RETURNING id INTO l_id;

  DBMS_OUTPUT.put_line('UPDATE ID=' || l_id);

  DELETE FROM t1  WHERE  description = 'FOUR'
  RETURNING id INTO l_id;

  DBMS_OUTPUT.put_line('DELETE ID=' || l_id);

  COMMIT;

四、当DML影响多行时,使用returing into,借助bulk collection语句将值返回到一个集合中。

DECLARE
  TYPE t_tab IS TABLE OF t1.id%TYPE;
  l_tab t_tab;
BEGIN
  UPDATE t1  SET    description = description
  RETURNING id BULK COLLECT INTO l_tab;

  FOR i IN l_tab.first .. l_tab.last LOOP
    DBMS_OUTPUT.put_line('UPDATE ID=' || l_tab(i));
  END LOOP;

  COMMIT;
END;

五、在For All语句中使用returing into。

DECLARE
  TYPE t_desc_tab IS TABLE OF t1.description%TYPE;
  TYPE t_tab IS TABLE OF t1%ROWTYPE;
  l_desc_tab t_desc_tab := t_desc_tab('FIVE', 'SIX', 'SEVEN');
  l_tab   t_tab;
BEGIN  
  FORALL i IN l_desc_tab.first .. l_desc_tab.last
    INSERT INTO t1 VALUES (t1_seq.nextval, l_desc_tab(i))
    RETURNING id, description BULK COLLECT INTO l_tab;

  FOR i IN l_tab.first .. l_tab.last LOOP
    DBMS_OUTPUT.put_line('INSERT ID=' || l_tab(i).id ||    ' DESC=' || l_tab(i).description);
  END LOOP;

  COMMIT;
END;

六、在动态sql中使用。

DECLARE
  TYPE t_tab IS TABLE OF t1.id%TYPE;
  l_tab t_tab;
BEGIN
  EXECUTE IMMEDIATE 'UPDATE t1 SET  description = description   RETURNING id INTO :l_tab'
  using 7369
  RETURNING BULK COLLECT INTO l_tab;

  FOR i IN l_tab.first .. l_tab.last LOOP
    DBMS_OUTPUT.put_line('UPDATE ID=' || l_tab(i));
  END LOOP;

  COMMIT;
END;

注意:

  • returning into在动态sql内部和外面都要写,且外面的returning后面不加字段直接into。

  • using在returning前面

  • 动态sql内部into后面变量名不固定,注意冒号(:),可以是命名规则下的任意字符。

  • returning bulk collect into要写在外面,且后面不能是record。

七、在C# 中使用returing into子句。

using (OracleCommand cmd = Globals.Db.Connection.CreateCommand())
{
    cmd.CommandText = "INSERT INTO table (Col1, Col2) VALUES (:ParamCol1, :ParamCol2) RETURNING ROWIDTOCHAR(ROWID) INTO :OutputROWID";
    cmd.Parameters.Add(paramCol1, data["Col1"]);
    cmd.Parameters.Add(paramCol2, data["Col2"]);
    OracleParameter outputRowId = new OracleParameter(":OutputROWID", OracleDbType.Varchar2, 30)
    {
        Direction = ParameterDirection.ReturnValue
    };//一定要有Size参数。
    cmd.Parameters.Add(outputRowId);
    cmd.BindByName = true;

    cmd.ExecuteNonQuery();
    string rtnValue = outputRowId.Value.ToString();
}

到此这篇关于Oracle在DML语句中使用returing into子句的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Oracle在DML语句中使用returing into子句

本文链接: https://lsjlt.com/news/148029.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle在DML语句中使用returing into子句
    一、概述: ORACLE的DML语句中可以指定RETURNING语句。使用起来也很简单,和SELECT INTO语句没有多大区别。RETURNING语句的使用在很多情况下可以...
    99+
    2024-04-02
  • oracle fetch into语句怎么使用
    FETCH INTO语句用于从游标中获取数据,并将其存储在指定的变量中。下面是FETCH INTO语句的使用方法:1. 首先,声明一...
    99+
    2023-10-18
    oracle
  • INSERT INTO SELECT 语句及使用
    SQL里怎么把一个数据库的表复制到另一个数据库 1.SELECT * INTO 表1 FROM 表2 --复制表2如果只复制结构而不复制内容或只复制某一列只要加WHERE条件就好 2.假设...
    99+
    2024-04-02
  • MySQL中replace into语句怎么使用
    在MySQL中,`REPLACE INTO`语句用于插入新记录或更新已存在的记录。它的语法如下:```sqlREPLACE INTO...
    99+
    2023-09-14
    MySQL
  • 详解mysql DML语句的使用
    前言: 在上篇文章中,主要为大家介绍的是DDL语句的用法,可能细心的同学已经发现了。本篇文章将主要聚焦于DML语句,为大家讲解表数据相关操作。 这里说明下DDL与DML语句的分类,可能有的同学还不太清楚。 DDL(...
    99+
    2022-05-28
    mysql dml mysql dml语句
  • mysql中insert into语句的使用方法
    小编给大家分享一下mysql中insert into语句的使用方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Mysql数据库对于插入数据有专门的语句,就是in...
    99+
    2023-06-14
  • SQL中dml语句有什么用
    这篇文章主要介绍了SQL中dml语句有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在叙述如何对数据表进行增删改查之前,我们先创建一个...
    99+
    2024-04-02
  • SQLite的INSERT INTO语句怎么使用
    本篇内容介绍了“SQLite的INSERT INTO语句怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQLite的INSERT I...
    99+
    2023-06-27
  • 在SQLServer中使用子查询更新语句
    测试环境准备 create table #table1 ( id int , name varchar(20) ); go create table #t...
    99+
    2024-04-02
  • MySQL数据操作-DML语句的使用
    说明 DML(Data Manipulation Language)数据操作语言,是指对数据库进行增删改的操作指令,主要有INSERT、UPDATE、DELETE三种,代表插入、更新与删除,这是学习MySQL...
    99+
    2022-05-14
    MySQL dml语句 mysql 数据操作
  • oracle中create table with as和insert into with as语句
    oracle支持使用with as 子句来创建表语法:create table table_name as with clause_name as (select query )[, clau...
    99+
    2024-04-02
  • MySQL中select into outfile语句怎么用
    在MySQL中,SELECT INTO OUTFILE语句用于将查询结果导出到一个文件中。使用该语句的基本语法如下:...
    99+
    2024-03-01
    MySQL
  • MySQL中select insert into语句有什么用
    在MySQL中,SELECT INTO语句用于将查询结果插入到新的表中。这可以通过以下步骤完成: 使用SELECT语句来获取需要插...
    99+
    2024-04-09
    MySQL
  • Mysql 中ON子句和USING子句如何使用
    Mysql 中ON子句和USING子句如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Mysql ON子句和USING子...
    99+
    2024-04-02
  • MySQL中怎么使用replace into语句处理出错
    这篇文章给大家分享的是有关MySQL中怎么使用replace into语句处理出错的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。replace into实现原理如果新插入行的主键或唯一键在表中已经存在,...
    99+
    2023-06-14
  • 7.PL_SQL——在PL_SQL程序中内嵌查询语句、DML语句、事物处理语句和游标属性
        在PL/SQL中可以使用的SQL语句主要有以下几类:       SELECT 查询语句,DML语句,Transaction 事物...
    99+
    2024-04-02
  • 如何在SQLServer中使用GROUPBY子句
    在SQLServer中,使用GROUP BY子句可以对查询结果进行分组,并对每个组应用聚合函数。以下是在SQLServer中使用GR...
    99+
    2024-04-02
  • 如何在SQLite中使用GROUPBY子句
    在SQLite中,可以使用GROUP BY子句将查询结果按照一个或多个列进行分组。例如,假设有一个表格包含学生的成绩数据,并且想要按...
    99+
    2024-04-09
    SQLite
  • 怎么在Oracle中使用OVER查询语句
    本篇文章为大家展示了怎么在Oracle中使用OVER查询语句,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、rank()/dense_rank() over(pa...
    99+
    2024-04-02
  • MySQL中replace into 语句的作用是什么
    这期内容当中小编将会给大家带来有关MySQL中replace into 语句的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  在主库上操作。  代码...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作