CREATE function getTree(@idPart int,@idView int)returns @tabinfo table (OBJECT_ID int,CN_CID int,CN_PARID int)
as
begindeclare @cid int
set @cid = 0insert @tabinfo
select OBJECT_ID2,@cid,OBJECT_ID1 from ITEMS_TREE where OBJECT_ID1 = @idPart while @@rowcount>0
begin set @cid = @cid + 1 insert @tabinfo
select distinct OBJECT_ID2,@cid,OBJECT_ID1
from ITEMS_TREE as x join @tabinfo as y
on x.OBJECT_ID1=y.OBJECT_ID
where y.CN_CID = @cid-1 and endreturnend这是一个sql server 2000的函数,是查询一个零件树的结构ITEMS_TREE表存放零件和零件的父子关系(即链接关系),函数返回的是个表,哪位大哥能把这个函数转换成完整的oracle的函数小弟在此谢了
解决方案 »
- HP-UX中应用程序无法启动oracle 10g
- 急! sql验证问题。
- 关于imp的问题,新手求助!
- 在oracle数据库中如何查询出一个表中最后插入的一条记录?
- oracle 数据恢复的问题(急)
- dbms_job.submit的问题
- 客户端在不安装oracle client的前提下,如何连接远程oracle server ?需要什么文件呢?
- 请问我怎么才能看到有多少数据库和库内的数据表
- 文本导入数据库
- 如何在一个数据库的过程中连结另一个数据库!!!
- 执行PL/SQL错误后怎么才能取出发生错误的行号
- select ...into 如果select查询语句有多条记录,用select ...into 会不会报错呢?
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);
插入测试数据:INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''1'''',''''10'''',''''0'''');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''2'''',''''11'''',''''1'''');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''3'''',''''20'''',''''0'''');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''4'''',''''12'''',''''1'''');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''5'''',''''121'''',''''2'''');
从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pid
从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid = id
在Oracle中不需要函数的,Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用
参考下面的方法
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID NUMBER, 零件
NAME VARCHAR2(100 BYTE), 零件名
PID NUMBER DEFAULT 0 父零件
);
插入测试数据:INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''1'''',''''10'''',''''0'''');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''2'''',''''11'''',''''1'''');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''3'''',''''20'''',''''0'''');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''4'''',''''12'''',''''1'''');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''5'''',''''121'''',''''2'''');
从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pid
从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid = id
现在为了保证程序的一致性,必须写和sqlserver返回一个表的函数
这个函数目前我就是不知道怎么返回一个表