如何解决PL/SQL 显示带有条件的表中的数据
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;
/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。