微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PL/SQL 显示带有条件的表中的数据

如何解决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 举报,一经查实,本站将立刻删除。