oracle数据库多表嵌套,sql – 在oracle中更新多个嵌套表中的多个记录
也许避免在数据库中使用嵌套表的最佳原因是它们难以使用,并且语法文档未被记录且难以理解.
继续!
这是一个带有嵌套表的表.
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中更新多个嵌套表中的多个记录相关推荐
- python读取oracle数据库中文乱码_PL/SQL连接Oracle数据库,中文乱码,显示问号
PL/SQL连接oracle数据库 1.简单介绍 在不安装oracle数据库的情况下使用pl/sql连接远程oracle数据库. 2.详细步骤: a) 安装PL/SQL.依据自己的操作系统安 ...
- oracle数据库同步工具Dell,|SQL Maestro Oracle Data Sync(数据库同步工具)下载v16.4.0.6免费版 - 欧普软件下载...
Oracle Data Sync是一款好用的Oracle数据库同步软件,软件可以自动创建无错误的同步脚本,可实现数据库中各项数据的快速同步,还有自定义比较键和自动映射工具,提高同步数据的准确性.支持命 ...
- 把Oracle数据库移植到Microsoft SQL Server 7 0
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 把Ora ...
- Oracle数据库使用Analyze提升sql性能
Oracle数据库使用Analyze提升sql性能 如果你不使用analyze完成sql优化,将意味着:你拒绝使用数据库的查询优化器,也失去了使用优化连接的机会.假设你创建了一张拥有100万条记录的临 ...
- oracle数据库访问sqlserver2008,透过SQL Server 2008访问Oracle 10g的配置方法
之前写过一篇关于SQL Server 访问MySQL数据库的文章,最近正好又遇到需要访问Oracle 的情况,将配置过程记录下来也供大家参考. 准备工作 事先在需要访问Oracle 数据库的主机上完成 ...
- idea如何给oracle添加数据_intelij idea下使用java和JDBC连接oracle数据库及简单的SQL操作...
intelij idea下使用java和JDBC连接oracle数据库及简单的SQL操作 发布时间:2018-07-04 10:09, 浏览次数:2532 , 标签: intelij idea jav ...
- Oracle数据库学习:PL/SQL(详解)
Oracle数据库学习:PL/SQL 什么是PL/SQL PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的扩展语言; 使用PL/SQL 可以编写具 ...
- oracle - - 注释符,Oracle数据库扩展语言PL/SQL之注释、分隔符和标识符
点击蓝字关注我吧 [本文详细介绍了Oracle数据库扩展语言PL/SQL的注释.分隔符和标识符,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 注释 注释不会被数据库编译,只是给开发人提供一 ...
- winform执行oracle语句,C#中的Winform应用程序连接远程Oracle数据库的配置文件及SQL语句的写法...
远程连接Oracle数据库的配置文件及sql语句 近期,应朋友的要求,用C#语言开发了一个winform应用程序,要求的是连接到远程的Oracle数据库,用惯了SQL Server的我突然有点懵,然后 ...
- oracle删除一张表的sql语句,oracle删除表的语句
oracle删除一个用户下的表的sql语句是什么啊 删除用户所有表declarecursor c1 is select table_name from dba_tables where owner=' ...
最新文章
- java负载均衡框架_SpringCloud与Consul集成实现负载均衡功能
- Windows Phone 二、WP控件
- 在公网上的Linux,我的一些配置分享
- 转载:bug的处理流程
- 适配器模式真的很简单
- 在Updatepanel中使用Response.Redirect
- STM32工作笔记005---STM32芯片解读
- android自动运行服务,Android开机自启动服务的实现方法
- node-webkit浏览器插件注册升级方式
- 控制系统数字仿真-基于MATLAB实现四阶龙格库塔法
- html网页特效代码笔记,一个js实现的网页鼠标点击特效代码
- TwinCAT软件的帮助如何使用
- 虚短虚断是怎么来的?长篇好文介绍深度负反馈
- 交警计算机系统审计,公安移动警务审计及考核系统
- 查税号,税号查询,纳税人识别号查询 - 企查查
- Mbps、Kbps、KBps的关系
- Module-ScyllaDB技术文档
- 6.4.1等价关系2
- 【图像分类案例】(10) Vision Transformer 动物图像三分类,附Pytorch完整代码
- javascript 神经网络
热门文章
- sql文件与数据库的连接到服务器,如何:连接到基于文件的数据库
- html制作第二页,订单第二页.html
- linux上离线安装mysql_Linux下安装mysql(离线安装和在线安装)
- Jmeter性能测试之JDBC Request连接数据库
- docker 自定义网桥
- Linux strace 跟踪进程信息
- java filewriter_Java基础篇:什么是FileWriter
- excel求期望_商务数据分析考试:决策树分析(Excel)-安聪
- java如何映射mysql枚举_java中自定义枚举enum映射到mysql数据库字段处理器handler
- java并发实战看不懂,附带学习经验