3

作成した PL/SQL スクリプトを実行しようとしていますが、次のエラーが発生します。
PLS-00653: aggregate/table functions are not allowed in PL/SQL scope

ここでの問題は、エラー自体ではなく、エラーがスローされている行です。
このエラーをスローする PL/SQL ブロックは次のとおりです。

DECLARE
    TYPE l_code_arr_typ IS VARRAY(3) OF VARCHAR2(100);
    l_code_arr l_code_arr_typ;
    l_objet    objet_interface_pkg.objet_interface_typ;
    l_resultat CLOB;
    l_valeur   valeur_pkg.valeur_typ;
    l_liens    lien_objet_interface_pkg.lien_objet_interface_tab;
    l_rows NUMBER;
BEGIN
    l_code_arr := l_code_arr_typ('champ.fonctions.dossier.particulier',
                                 'champ.fonctions.region.admin',
                                 'champ.fonctions.ministere.organisme');
    l_resultat := '{';

    FOR l_idx IN 1 .. l_code_arr.count LOOP
        l_objet    := objet_interface_pkg.obtenir_fnc(p_code      => l_code_arr(l_idx),
                                                      p_acron_sys => :acronyme);
        l_resultat := l_resultat || '"' || l_objet.code || '":[';

        l_liens := lien_objet_interface_pkg.obtenir_par_objet_fnc(p_id_objet => l_objet.id_obj);
        FOR l_lien IN (SELECT * FROM TABLE(l_liens)) LOOP
            l_valeur   := valeur_pkg.obtenir_fnc(p_id => l_lien.id_valeur);
            l_resultat := l_resultat || '"' || l_valeur.valeur || '"';

            FOR l_enfant IN (SELECT *
                               FROM TABLE(valeur_pkg.obtenir_enfants_fnc(p_id_parent => l_lien.id_valeur,
                                                                         p_code      => l_valeur.valeur))) LOOP
                l_resultat := l_resultat || ',"' || l_enfant.valeur || '"';
            END LOOP;
        END LOOP;

        l_resultat := l_resultat || '],';
    END LOOP;
    <<<<<<<<<< ERROR THROWN HERE (EMPTY LINE)
    l_resultat := substr(l_resultat, 1, length(l_resultat) - 1) || '}';
    dbms_output.put_line(l_resultat);
END;

エラーは、コード ブロックの末尾から 4 行目である 34:17 (行:列) でスローされます。ご覧のとおり、実際の問題は、この行が空の行であることです。さらに、その空の行の近くの行には、集計関数への呼び出しが含まれていません。
では、集計/テーブル関数の呼び出しはどこにありますか?

問題が本当に自分のコードにあるのか、それともPL/SQL 開発者が壊れているのか疑問に思っています。

誰かが私を助けてくれることを願っています...

4

1 に答える 1