用函数实现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
相关文档:
1.Oracle怎样存储文本
CHAR和VARCHAR2的区别
•CHAR定长字符串,VARCHAR2变长字符串。
•CHAR(n) 定长字符串,n字节,n的取值范围:1~2000字节。
•VARCHAR2(n) 可变长的字符串,定义时应指明最大长度,取值范围:1~ 4000字节。
2. Oracle怎样存储数值
数值类型说明: NUMBER(m , n)
数字 ......
Oracle中常用的命令和函数,做个整理,以备以后用到,方便查阅。
常用命令:
连接sqlplus
命令行下运行cmd进入,如以sys模式登陆,命令如下:
(1).sqlplus "sys/zhb126 as sysdba"
(2).sqlplus/nolog connect sys/zhb126 as sysdba
(3).sqlplus scott ......
php调用oracle行存储过程############################################################
PHP程序访问数据库,完全可以使用存储过程,有人认为使用存储过程便于维护
不过仁者见仁,智者见智。
在这个问题上,偶认为使用存储过程意味着必须要DBA和开发人员更紧密配合,如果其中一方更变,则显然难以维护。
但是使用存储 ......