pl / sql的分层查询任务

时间:2017-12-17 04:59:27

标签: sql plsql

这是我的第一个问题。我在学校里有这样的任务。我们有NAME,PARENT,MONEY,CITY栏目。我们的任务是为后代制作输出名称,金钱和平均金额。这是真的,平均金钱 后代的人数大于人的钱。

我编写此代码但无法理解错误...

CREATE OR REPLACE PROCEDURE rich_avg_descendant IS
 cnt INTEGER;
BEGIN
 FOR rec IN (SELECT name, money,AVG(money) FROM ourtable) loop
  SELECT count(*) INTO cnt FROM ourtable 
  GROUP BY name
  HAVING AVG(money)> rec.money
  START WITH name = rec.name CONNECT BY PRIOR name = parent;
  IF cnt > 0 THEN dbms_output.put_line(name,money,AVG(money)); END IF;
END loop;
END;
/

错误在START WITH子句中以START加下划线。

Error starting at line : 14 in command -
BEGIN rich_avg_descendant(); END;
Error report -
ORA-06550: line 1, column 7:
PLS-00905: object myschoolcode.RICH_AVG_DESCENDANT is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

你可以在这段代码中告诉我错误吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

connect by子句应位于开头的子句

之前