2017-12-17 5 views
-1

これは私の最初の質問です。私は学校でこのような作業をしています。名前、親、金、市の列を持つテーブルがあります。出力名、金額、子孫の平均金額 がその人のお金よりも大きいことが確かな子孫です。pl/sqlを使った階層クエリタスク

私は

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は下線が引かれて、START WITH句である...このコードを記述しますが、エラーを理解することはできません。

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: 

このコードで私の間違いを教えてください。

ありがとうございます。

+0

正確なエラーメッセージを共有してください。問題を絞り込むために、テスト値を使用して独自のクエリを試すことができます。 –

+0

投稿されたエラーメッセージは、コンパイルエラーがあることを示しています。それでは、コンパイルエラーが何であるか教えてください。 SQL \ * Plusでは、コードをコンパイルした後に 'show err'を実行します。あるいは、 'select * from user_errors'のクエリ。 **あなたの質問を**編集してこの情報を含めることを忘れないでください。また、別の無回答を投稿しないでください。 – APC

答えて

0

接続句は、開始句の前にある必要があります。

+0

いいえ、このようには機能しません – rifat88

+0

これを読んでください: https://stackoverflow.com/help/someone-answers – XING