前段时间在做oracle查询的时候遇到了一个非常奇怪的现象,现将现象和解决过程记录下来,以备查看:环境描述:A数据库通过dblink访问B数据库的视图,B数据库的视图的数据是通过B的dblink连接到C数据库的某个物理表。现象描述:在程序里通过jdbc连接A数据库,查询B数据库的视图,报错:ORA-00600: internal error code, arguments: [kxxx], [], [], [], [], [], [],[], [], [], [], [],排错过程:用C#写了个小程序连接测试,发现也是...
: 分表,分区,建索引,全表扫描---开并行, 永远把它 放内存,压缩2.多表关联,任何时刻只能是2个表关联,得到的结果集再和其他表关联。3.嵌套循环:Oracle从较小结果集(驱动表/外部表)中读取一行,然后和较大结果集(被探查表/内部表)中的所有数据逐条进行比较(嵌套循环可以用于非等值连接),如果符合规则,就放入结果集中,然后取较小结果集的下一条数据继续进行循环,直到结束。嵌套循环只适合输出少量结果集或者是用于快速输出...
from emp egroup by deptnohaving avg(sal) = (select max(avg(sal)) from emp group by deptno))eleft join dept don e.deptno=d.deptno; 有人说,红色加粗的一段多此一举,红色部分完全可以写成如下形式 select max(avg(sal)) sal,deptnofrom emp egroup by deptno; 但是注意,分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组条件的列名。所以这条语句会直接报错 也就是说,这里用了嵌套分组函数之后,deptno就...
在存在in的 子查询的 SQL语句和存在 EXISTS 的相关子查询的 SQL语句 的执行计划里,有NESTED LOOPS SEMI (即半嵌套循环)。 所谓的 NESTED LOOPS SEMI (即半嵌套循环) ,就是 the out query stops evaluating (评价, 求…的数 )the result set of the在存在in的子查询的SQL语句和存在EXISTS的相关子查询的SQL语句的执行计划里,有NESTEDLOOPS SEMI (即半嵌套循环)。所谓的NESTED LOOPS SEMI (即半嵌套循环),就是 the ou...
在很多数据库都有循环这种简单的语法,我们oracle中也不例外,下面我们先来看一个oracel中的嵌套循环再以实例2来详解说明跳出内部循环体.在很多数据库都有循环这种简单的语法,我们oracle中也不例外,下面我们先来看一个oracel中的嵌套循环再以实例2来详解说明跳出内部循环体. 代码如下 PROCEDURE test(P_MSG out VARCHAR2) isbegin<>for i in 1 .. 10 loop<>for j in 1 .. 5 loopdbms_output.put_line(i: || i || j : || j);EXIT...
单行函数可以嵌套到任意深度。嵌套函数的计算顺序是从最内层到最外层。下面的一些示例显示这类函数的灵活性。 示例显示部门60 中的雇员的姓氏。该SQL 语句的计算涉及以下三个步骤: 1.内部函数检索姓氏的前8 个字符。 Result1 = SUBSTR (LAST_NAME, 1, 8) 2.外层函数将结果与_US连接在一起。 Result2 = CONCAT(Result1, _US) 3.最外层函数将结果转换为大写。 因为没有给出列别名,所以整个表达式就成为列标题。 示例: 显示距聘用日...
嵌套循环连接处理的两个数据集被称为外部循环(outer loop,也就是驱动数据源,driving row soulce )和内部循环〔 inner loop ) 嵌套循环连接处理的两个数据集被称为外部循环(outer loop,也就是驱动数据源,driving row soulce )和内部循环〔 inner loop )。外部循环为左子节点,内部循环为右子节点.如图10 一6 所示,当外部循环执行一次的时候,内部循环需要针对外部循环返回的每条记录执行一次。嵌套循环连接有以下几点特...
如下的SQL语句查询不到任何记录,尽管数据库中有符合条件的记录。这是Oracle三层查询的bug。select cb.* from mw_app.t_cb cb wh 如下的SQL语句查询不到任何记录,尽管数据库中有符合条件的记录。这是Oracle三层查询的bug。 select cb.* from mw_app.t_cb cb where cb.obj_id in (select cba.channel_id from mw_app.t_current_business_alarm cba where cba.business_id in (select b.business_id from mw_app.t_rt_business b ...
把oracle嵌套表的其他功能仔细看了看并做了个简单整理。oracle提供两种使用嵌套表的方法:1. PL/SQL代码中作为扩展PL/SQL语言; 把Oracle嵌套表的其他功能仔细看了看并做了个简单整理。 oracle提供两种使用嵌套表的方法:1. PL/SQL代码中作为扩展PL/SQL语言;(这部分内容就是上边所说oracle内存表是oracle嵌套表的部分功能)2. 作为物理存储机制,以持久地存储集合。 */ --创建测试表: CREATE TABLE dept (deptno NUMBER(2) ...
Oracle嵌套表很少用,下面来研究下其如何存储的。用一个例子,一个用户对应对个部门。 Oracle嵌套表很少用,下面来研究下其如何存储的。用一个例子,一个用户对应对个部门。 SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL Release 11.2.0.1.0 - Production CORE...
CREATE TYPE varray_type AS VARRAY( 2 ) OF VARCHAR2 ( 50 ); 这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改 变长数组类型和嵌套表类型 元素的大 CREATE TYPE varray_type AS VARRAY(2) OF VARCHAR2(50); 这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小。ALTER TYPE varray_type MOD...
通常情况下, 数据库中不要出现null,最好的做法加上非空约束Not null,null值并不代表不占空间, char(100) null占100个字符 1 --查询不是领导的信息(含null值错误写法)2 3 select * from emp where empno not in (select mgr from emp); --查询不到记录4 5 select * from emp where empno <>all(select mgr from emp);--上行等价写法6 7 8 9 --查询不是领导的信息(含null值正确写法) 10 11 select * from ...
原文链接:http://www.cnblogs.com/coprince/p/3443216.html完成批量修改user_tables中的所有表的栏位名(从MS SQL导入过来,发现大小写问题,造成很多麻烦) 存储过程见下:-- Created on 2012/3/14 by FREE declare-- Local variables hereCursor tbl_cur is select table_name from user_tables;--col_cur Cursor;i integer;tbl_name varchar2(50);col_name varchar2(50); begin-- Test statements herefor tbl_name in tbl_cur L...
–嵌套子查询 –嵌套子查询中子查询可以单独执行 –先执行子查询,把子查询结果跟主查询合并再进行数据过滤(后执行主查询):子查询只执行了一次 –查询比本部门平均工资高的员工姓名、编号 select emp.ename,emp.empno,emp.deptno,e.avgsal,emp.sal from emp ,(select deptno,avg(sal) avgsal from emp group by deptno)e where e.deptno=emp.deptno and sal>avgsal; –相关子查询 –相关子查询中,子查询不可以单独执行 –先...