`
Supanccy2013
  • 浏览: 223814 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

insert into/update/delete returning into语法

阅读更多
   insert into/update/delete   returning  into语法用于在plsql程序设计中插入一条记录后返回插入的信息
到设定的变量中:
   注意:rownum不能返回,rowid可以返回。
总结:
  1,返回的时候直接使用被插入表的字段名称例如:returning rowid,deptno || ',' ||  dname || ',' || loc这里的rowid,dename,loc都是被插入表中的字段。
  2,不能与DML语句和远程对象一起使用;
  3,不能检索LONG 类型信息(也就是rownum不能被返回,只能返回rowid)
  4,当通过视图向基表中插入数据时,只能与单基表视图一起使用。

  5,update返回的是更新以后的字段的数值。
实例:
   declare
      v_rownum number;
      v_rowid  rowid;
      v_info   varchar2(30);
   begin
      insert into dept values(8,'业务部','北京')
      returning rowid,deptno || ',' ||  dname || ',' || loc
      into v_rowid,v_info;

      dbms_output.put_line(v_rowid);
      dbms_output.put_line(v_info);
    end;
输出结果:
    SQL> declare
  2      v_rownum number;
  3      v_rowid  rowid;
  4      v_info   varchar2(30);
  5  begin
  6      insert into dept values(8,'业务部','北京')
  7      returning rowid,deptno || ',' ||  dname || ',' || loc
  8      into v_rowid,v_info;
  9      dbms_output.put_line(v_rowid);
 10      dbms_output.put_line(v_info);
 11  end;
 12  /
AAAMfNAAEAAAAAMAAD
8,业务部,北京


PL/SQL procedure successfully completed

2,//更新时返回实例
DECLARE
   Row_id ROWID;
   info VARCHAR2(40);
BEGIN
   UPDATE dept SET deptno=100 WHERE DNAME='财务室'
   RETURNING rowid, dname||':'||to_char(deptno)||':'||loc
   INTO row_id, info;
   DBMS_OUTPUT.PUT_LINE('ROWID:'||row_id);
   DBMS_OUTPUT.PUT_LINE(info);
END;
   RETURNING子句用于检索被修改行的信息。当UPDATE语句修改单行数据时,RETURNING 子句可以检索被修改行的ROWID和REF值,以及行中被修改列的列表达式,并可将他们存储到PL/SQL变量或复合变量中;当UPDATE语句修改多行数据时,RETURNING 子句可以将被修改行的ROWID和REF值,以及列表达式值返回到复合变量数组中。在UPDATE中使用RETURNING 子句的限制与INSERT语句中对RETURNING子句的限制相同。

3,删除时返回
DECLARE
   Row_id ROWID;
   info VARCHAR2(40);
BEGIN
   DELETE dept WHERE DNAME='办公室'
   RETURNING rowid, dname||':'||to_char(deptno)||':'||loc INTO row_id, info;
   DBMS_OUTPUT.PUT_LINE('ROWID:'||row_id);
   DBMS_OUTPUT.PUT_LINE(info);
END;

   RETURNING子句用于检索被删除行的信息:当DELETE语句删除单行数据时,RETURNING 子句可以检索被删除行的ROWID和REF值,以及被删除列的列表达式,并可将他们存储到PL/SQL变量或复合变量中;当DELETE语句删除多行数据时,RETURNING 子句可以将被删除行的ROWID和REF值,以及列表达式值返回到复合变量数组中。在DELETE中使用RETURNING 子句的限制与INSERT语句中对RETURNING子句的限制相同。


  如果在teturning 后边添加 rownum会有错误提示:
         ORA-00976: 此处不允许为 LEVEL, PRIOR 或 ROWNUM


  
分享到:
评论

相关推荐

    JAVA 与 Sql学习笔记

    - out-bind(输出绑定):当INSERT, UPDATE, 或 DELETE语句的RETURNING子句将数据库值分配给PL/SQL变量或主机变量。 - define(定义绑定):当SELECT或FETCH语句将数据库值分配给PL/SQL变量或主机变量。 3. **DML...

    ibatis框架实现的增删改查

    在这里,`RETURNING id INTO #{id}`是Oracle数据库特有的语法,用于获取自动生成的主键值。 2. 更新操作 ```xml <update id="updateStudent"> UPDATE student SET name = #{name}, age = #{age}, address = ...

    PL/SQL编程基础知识

    以下示例演示了如何在INSERT语句中使用RETURNING子句来检索刚插入的记录的ROWID和相关信息: ```sql DECLARE Row_id ROWID; info VARCHAR2(40); BEGIN INSERT INTO scott.dept VALUES (90, '财务室', '海口') ...

    DocSys系统开发问题记录1

    JDBC默认情况下,`insert`, `update`, `delete`等操作的返回值表示的是受影响的行数,并不能直接返回新插入记录的ID。针对这一需求,有两种常用的方法: 1. **利用`INSERT INTO … RETURNING`语法**: - 对于支持`...

    oracleplus编程

    在 PL/SQL 中执行数据操纵语言 (Data Manipulation Language, DML) 语句(如 INSERT、UPDATE 和 DELETE)时,可以使用 RETURNING 子句来检索操作结果。 **3.1 插入记录示例** ```sql DECLARE Row_id ROWID; info ...

    Merge-Sql.zip

    在SQL标准中,MERGE是一种DML(数据操纵语言)操作,它结合了INSERT、UPDATE和DELETE的功能。通过比较源表和目标表的数据,MERGE可以判断哪些记录需要添加、哪些需要更新或删除,从而实现数据的一致性。它的基本语法...

    第十四课Oracle游标和异常处理.pptx

    而处理包含占位符的DML语句时,如INSERT、UPDATE或DELETE,需要使用BIND_ARGUMENT来传递参数,语法为EXECUTE IMMEDIATE 'SQL命令' USING 参数列表。对于返回数据的DML语句,可以使用RETURNING INTO子句来捕获结果,...

    ORACLE资料

    以上内容覆盖了Oracle基础语法的重要方面,包括SQL分类、`SELECT FOR UPDATE` 语句、`LOCK TABLE` 命令、动态 SQL 以及表连接等核心概念。通过掌握这些知识点,你可以更有效地管理和操作Oracle数据库中的数据。

    将PHP的session数据存储到数据库中的代码实例_.docx

    INSERT INTO php_session (sess_id, modify_time, sess_data) SELECT $1, CURRENT_TIMESTAMP, $2 WHERE NOT EXISTS (SELECT 1 FROM upsert); $set_session$ LANGUAGE SQL; -- 获取 session CREATE OR REPLACE...

    mysql-8.0.23-winx64.zip

    4. 数据插入与查询:INSERT INTO插入数据,SELECT查询数据,UPDATE更新数据,DELETE删除数据。 五、新特性 1. 引入CTE(公共表表达式):允许在查询中定义临时结果集,增强复杂查询的可读性。 2. JSON增强:提供了...

    PostgreSQL WITH 子句

    除了 `SELECT`,`WITH` 子句还可以与 `INSERT`, `UPDATE` 和 `DELETE` 语句结合,使你在单个查询中执行多个数据库操作。例如,以下代码将删除 `COMPANY` 表中 `SALARY` 大于等于 30000 的记录,并将这些记录插入到新...

Global site tag (gtag.js) - Google Analytics