Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
plsql oracle父级子级_Sql_Plsql_Oracle9i - Fatal编程技术网

plsql oracle父级子级

plsql oracle父级子级,sql,plsql,oracle9i,Sql,Plsql,Oracle9i,我在Oracle 9i数据库表中具有父子关系 比如: 我有一个绝对父对象(例如,子对象1),我需要一个此父对象的所有子对象的csv列表或结果集。我们刚离开Oracle,但我在SQL Server中为您编写了此过程(除了光标声明,它们应该非常相似) 使用SYS_CONNECY_BY_PATH将为您提供以逗号分隔的整个层次结构: SELECT SYS_CONNECT_BY_PATH(parent, ',') "PATH" FROM table START WITH child = 1 C

我在Oracle 9i数据库表中具有父子关系

比如:


我有一个绝对父对象(例如,子对象1),我需要一个此父对象的所有子对象的csv列表或结果集。

我们刚离开Oracle,但我在SQL Server中为您编写了此过程(除了光标声明,它们应该非常相似)


使用SYS_CONNECY_BY_PATH将为您提供以逗号分隔的整个层次结构:

SELECT SYS_CONNECT_BY_PATH(parent, ',') "PATH" 
  FROM table 
 START WITH child = 1 
CONNECT BY PRIOR child = parent; 

进一步的选项

您的问题是什么:如何进行分层查询,如何将其格式化为.CSV文件,或者两者兼而有之?
CREATE PROCEDURE ShowRelationships
@parent AS int
AS
 PRINT 'Parent =  ' + CAST(@parent AS varchar(3))

 DECLARE @child AS int;
 DECLARE cur_children CURSOR
 FOR
  SELECT child
  FROM PCREL
  WHERE parent = @parent;

 OPEN cur_children;
 FETCH NEXT FROM cur_children INTO @child;

 IF (@child IS NULL)
 BEGIN
  PRINT CAST(@parent AS varchar(3)) + ' has no children...';
 END

 WHILE @@FETCH_STATUS = 0
 BEGIN
  PRINT 'Child = ' + CAST(@child AS varchar(3))

  FETCH NEXT FROM cur_children INTO @child;
 END

 CLOSE cur_children;
 DEALLOCATE cur_children;


 SELECT TOP 1 @child = child
 FROM PCREL
 WHERE parent = @parent;

 EXECUTE ShowRelationships @child;

GO
SELECT SYS_CONNECT_BY_PATH(parent, ',') "PATH" 
  FROM table 
 START WITH child = 1 
CONNECT BY PRIOR child = parent;