问题描述
CREATE OR REPLACE PROCEDURE categorie AS
v_age NUMBER := 1;
part_info participant%rOWTYPE;
BEGIN
SELECT *
INTO part_info
FROM Participant
WHERE age > v_age;
FOR i IN part_info
IF(part_info.age<=18) THEN
DBMS_OUTPUT.PUT_LINE('NAME: ' || part_info.nomParticipant || 'CATEGORIE : JUNIOR');
ELSIF(part_info.age>=50) THEN
DBMS_OUTPUT.PUT_LINE('NAME: ' || part_info.nomParticipant || 'CATEGORIE : SENIOR');
ELSE
DBMS_OUTPUT.PUT_LINE('NAME: ' || part_info.nomParticipant || 'CATEGORIE : MIDDLE');
END IF;
END LOOP;
END;
我错过了什么?
解决方法
首先,代码中缺少打开 LOOP
,因此会引发错误。因此,您似乎想使用游标而不是单独使用 SELECT
语句,然后将 part_info
限定符替换为 i
中的 LOOP
:
SQL> SET SERVEROUTPUT ON
SQL> CREATE OR REPLACE PROCEDURE categorie AS
v_age INT := 1;
CURSOR part_info IS
SELECT *
FROM Participant
WHERE age > v_age;
BEGIN
FOR i IN part_info
LOOP
IF i.age <= 18 THEN
DBMS_OUTPUT.PUT_LINE('NAME: ' || i.nomParticipant || ' CATEGORIE : JUNIOR');
ELSIF i.age >= 50 THEN
DBMS_OUTPUT.PUT_LINE('NAME: ' || i.nomParticipant || ' CATEGORIE : SENIOR');
ELSE
DBMS_OUTPUT.PUT_LINE('NAME: ' || i.nomParticipant || ' CATEGORIE : MIDDLE');
END IF;
END LOOP;
END;
/