用函数实现oracle的sys_connect_by_path功能
1.建表,插入数据
create table dept(deptno number,deptname varchar2(20),mgrno number);
insert into dept values(1,'总公司',null);
insert into dept values(2,'浙江分公司',1);
insert into dept values(3,'杭州分公司',2);
insert into dept values(4,'湖北分公司',1);
insert into dept values(5,'武汉分公司',4);
2.oracle查询语句
select *,sys_connect_by_path(deptname,'/') deptname from dept
start with mgrno is null connect by prior deptno=mgrno;
----------------------------------------------------------------------------------------
1 总公司 <NULL> /总公司
2 浙江分公司 1 /总公司/浙江分公司
3 杭州分公司 2 /总公司/浙江分公司/杭州分公司
4 湖北分公司 1 /总公司/湖北分公司
5 武汉分公司 4 /总公司/湖北分公司/武汉分公司
----------------------------------------------------------------------------------------
3.创建函数实现类似功能
CREATE or replace FUNCTION Branch
( vdeptname varchar(200),
vDelimiter IN VARCHAR(10) DEFAULT '/')
return varchar(4000)
as
c1 cursor;
temp varchar(4000);
vename varchar(200);
begin
temp=vDelimiter;
open c1 for select deptname from dept start with deptname
=vdeptname connect by deptno= prior mgrno;
loop
FETCH
相关文档:
确认闪回启用中
SHOW PARAMETER RECYCLEBIN; 启用闪回
ALTER SYSTEM SET RECYCLEBIN = ON; 闪回DROP的表
FLASHBACK TABLE xxx TO BEFORE DROP; 彻底清除DROP的表,将不能再闪回.
PURGE TABLE xxx; 直接彻底DROP掉表
DROP TABLE xxx PURGE; 清空所有DROP的表
PURGE RE ......
Oracle中如何用一条SQL快速生成10万条测试数据
做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,
那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法。
产生测试数据的SQL如下:
SQL> select rownum as id,
&nb ......
01、SQL与ORACLE的内存分配
ORACLE的内存分配大部分是由INIT.ORA来决定的,一个数据库实例可以有N种分配方案,不同的应用(OLTP、OLAP)它的配置是有侧重的。 SQL概括起来说,只有两种内存分配方式:动态内存分配与静态内存分配,动态内存分配充许SQL自己调整需要的内存,静态内存分配限制了SQL对内存的使 用。
002、SQ ......
oracle 同义词 synonym 为数据库对象建立同义词后,当dba对数据库对象(table,view,序列)做了一个简单改动之后,如名字或者结构改变,则不需要重新更改并编译应用.在数据库字典中有定义,不需要进行任何存储.
oracle别名alias,With as 生成一个临时表,对于复杂的数据查询,可以减少资源消耗、提高性能。9i引入。
with alias ......
表簇(table cluster)是一个数据库对象,它可以将那些经常在相同数据块中一起使用的表进行物理分组。当你处理那些经常连接在一起进行查询的表时,表簇是特别有效的。一个表簇存储簇键(用于将表连接到一起的列),以及簇表中的列值。因为簇中的表都被储存在相同的数据库块中,所以使用簇工作时,I/O操作就减少了。
......