也许避免在数据库中使用嵌套表的最佳原因是它们难以使用,并且语法文档未被记录且难以理解.

继续!

这是一个带有嵌套表的表.

SQL> select f.force_name, t.id, t.name

2 from transformer_forces f, table(f.force_members) t

3 /

FORCE_NAME ID NAME

---------- ---------- --------------------

Autobot 0 Metroplex

Autobot 0 Optimus Prime

Autobot 0 Rodimus

Decepticon 0 Galvatron

Decepticon 0 Megatron

Decepticon 0 Starscream

Dinobot 0 Grimlock

Dinobot 0 Swoop

Dinobot 0 Snarl

9 rows selected.

SQL>

如您所见,嵌套表中的每个元素ID属性在所有情况下都设置为零.我们想要做的是更新所有这些.可惜!

SQL> update table

2 ( select force_members from transformer_forces ) t

3 set t.id = rownum

4 /

( select force_members from transformer_forces ) t

*

ERROR at line 2:

ORA-01427: single-row subquery returns more than one row

SQL>

可以更新保留表中单行的嵌套表上的所有元素:

SQL> update table

2 ( select force_members from transformer_forces

3 where force_name = 'Autobot') t

4 set t.id = rownum

5 /

3 rows updated.

SQL>

但是,对整个表执行此操作的唯一方法是PL / SQL循环.呸!

有一个替代方案:use a Nested Table Locator,通过NESTED_TABLE_GET_REFS提示.这是一个特别模糊的事情(它不是在main list of hints),但它的作用是:

SQL> update /*+ NESTED_TABLE_GET_REFS */ force_members_nt

2 set id = rownum

3 /

9 rows updated.

SQL> select f.force_name, t.id, t.name

2 from transformer_forces f, table(f.force_members) t

3 /

FORCE_NAME ID NAME

---------- ---------- --------------------

Autobot 1 Metroplex

Autobot 2 Optimus Prime

Autobot 3 Rodimus

Decepticon 4 Galvatron

Decepticon 5 Megatron

Decepticon 6 Starscream

Dinobot 7 Grimlock

Dinobot 8 Swoop

Dinobot 9 Snarl

9 rows selected.

SQL>

这个提示允许我们完全绕过保持表并使用实际的嵌套表.也就是说,嵌套表存储子句中指定的对象:

create table transformer_forces (

force_name varchar2(10)

, force_members transformers_nt)

nested table force_members store as force_members_nt return as value;

^^^^^^^^^^^^^^^^

oracle数据库多表嵌套,sql – 在oracle中更新多个嵌套表中的多个记录相关推荐

  1. python读取oracle数据库中文乱码_PL/SQL连接Oracle数据库,中文乱码,显示问号

    PL/SQL连接oracle数据库 1.简单介绍 在不安装oracle数据库的情况下使用pl/sql连接远程oracle数据库. 2.详细步骤: a)      安装PL/SQL.依据自己的操作系统安 ...

  2. oracle数据库同步工具Dell,|SQL Maestro Oracle Data Sync(数据库同步工具)下载v16.4.0.6免费版 - 欧普软件下载...

    Oracle Data Sync是一款好用的Oracle数据库同步软件,软件可以自动创建无错误的同步脚本,可实现数据库中各项数据的快速同步,还有自定义比较键和自动映射工具,提高同步数据的准确性.支持命 ...

  3. 把Oracle数据库移植到Microsoft SQL Server 7 0

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 把Ora ...

  4. Oracle数据库使用Analyze提升sql性能

    Oracle数据库使用Analyze提升sql性能 如果你不使用analyze完成sql优化,将意味着:你拒绝使用数据库的查询优化器,也失去了使用优化连接的机会.假设你创建了一张拥有100万条记录的临 ...

  5. oracle数据库访问sqlserver2008,透过SQL Server 2008访问Oracle 10g的配置方法

    之前写过一篇关于SQL Server 访问MySQL数据库的文章,最近正好又遇到需要访问Oracle 的情况,将配置过程记录下来也供大家参考. 准备工作 事先在需要访问Oracle 数据库的主机上完成 ...

  6. idea如何给oracle添加数据_intelij idea下使用java和JDBC连接oracle数据库及简单的SQL操作...

    intelij idea下使用java和JDBC连接oracle数据库及简单的SQL操作 发布时间:2018-07-04 10:09, 浏览次数:2532 , 标签: intelij idea jav ...

  7. Oracle数据库学习:PL/SQL(详解)

    Oracle数据库学习:PL/SQL 什么是PL/SQL PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的扩展语言; 使用PL/SQL 可以编写具 ...

  8. oracle - - 注释符,Oracle数据库扩展语言PL/SQL之注释、分隔符和标识符

    点击蓝字关注我吧 [本文详细介绍了Oracle数据库扩展语言PL/SQL的注释.分隔符和标识符,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 注释 注释不会被数据库编译,只是给开发人提供一 ...

  9. winform执行oracle语句,C#中的Winform应用程序连接远程Oracle数据库的配置文件及SQL语句的写法...

    远程连接Oracle数据库的配置文件及sql语句 近期,应朋友的要求,用C#语言开发了一个winform应用程序,要求的是连接到远程的Oracle数据库,用惯了SQL Server的我突然有点懵,然后 ...

  10. oracle删除一张表的sql语句,oracle删除表的语句

    oracle删除一个用户下的表的sql语句是什么啊 删除用户所有表declarecursor c1 is select table_name from dba_tables where owner=' ...

最新文章

  1. java负载均衡框架_SpringCloud与Consul集成实现负载均衡功能
  2. Windows Phone 二、WP控件
  3. 在公网上的Linux,我的一些配置分享
  4. 转载:bug的处理流程
  5. 适配器模式真的很简单
  6. 在Updatepanel中使用Response.Redirect
  7. STM32工作笔记005---STM32芯片解读
  8. android自动运行服务,Android开机自启动服务的实现方法
  9. node-webkit浏览器插件注册升级方式
  10. 控制系统数字仿真-基于MATLAB实现四阶龙格库塔法
  11. html网页特效代码笔记,一个js实现的网页鼠标点击特效代码
  12. TwinCAT软件的帮助如何使用
  13. 虚短虚断是怎么来的?长篇好文介绍深度负反馈
  14. 交警计算机系统审计,公安移动警务审计及考核系统
  15. 查税号,税号查询,纳税人识别号查询 - 企查查
  16. Mbps、Kbps、KBps的关系
  17. Module-ScyllaDB技术文档
  18. 6.4.1等价关系2
  19. 【图像分类案例】(10) Vision Transformer 动物图像三分类,附Pytorch完整代码
  20. javascript 神经网络

热门文章

  1. sql文件与数据库的连接到服务器,如何:连接到基于文件的数据库
  2. html制作第二页,订单第二页.html
  3. linux上离线安装mysql_Linux下安装mysql(离线安装和在线安装)
  4. Jmeter性能测试之JDBC Request连接数据库
  5. docker 自定义网桥
  6. Linux strace 跟踪进程信息
  7. java filewriter_Java基础篇:什么是FileWriter
  8. excel求期望_商务数据分析考试:决策树分析(Excel)-安聪
  9. java如何映射mysql枚举_java中自定义枚举enum映射到mysql数据库字段处理器handler
  10. java并发实战看不懂,附带学习经验