1. ホーム
  2. sql

[解決済み】ストアドプロシージャーのエラー ORA-06550

2022-01-25 14:48:39

質問内容

sqlplusを使用して、このコードでコンパイルエラーが発生します。

私のエラーは

警告 プロシージャがコンパイルエラーで作成されました。

BEGIN point_triangle; END;

1行目でエラーが発生しました。ORA-06550: 1行目、7列目。
PLS-00905: オブジェクト POINT_TRIANGLE は無効です。
ORA-06550: 1 行目、7 列目。
PL/SQL ステートメントを無視

show errorsと入力すると、必ずエラーがないと表示されます。

以下はそのコードです。

create or replace procedure point_triangle
AS
A VARCHAR2(30);
B VARCHAR2(30);
C INT;
BEGIN
FOR thisteam in (select P.FIRSTNAME into A from PLAYERREGULARSEASON P where P.TEAM = 'IND' group by P.FIRSTNAME, P.LASTNAME order by SUM(P.PTS) DESC)
                (select P.LASTNAME into B from PLAYERREGULARSEASON P where P.TEAM = 'IND' group by P.FIRSTNAME, P.LASTNAME order by SUM(P.PTS) DESC)
                (select SUM(P.PTS) into C from PLAYERREGULARSEASON P where P.TEAM = 'IND' group by P.FIRSTNAME, P.LASTNAME order by SUM(P.PTS) DESC);
LOOP
    dbms_output.put_line(A|| ' ' || B || ':' || C);
END LOOP;

END;
/

は、すべてのプレーヤーをAとBに、そのチームでのキャリアのポイントをCに入れると仮定しています。

どのように解決するのですか?

create or replace procedure point_triangle
AS
BEGIN
FOR thisteam in (select FIRSTNAME,LASTNAME,SUM(PTS)  from PLAYERREGULARSEASON  where TEAM    = 'IND' group by FIRSTNAME, LASTNAME order by SUM(PTS) DESC)

LOOP
dbms_output.put_line(thisteam.FIRSTNAME|| ' ' || thisteam.LASTNAME || ':' || thisteam.PTS);
END LOOP;

END;
/