PL/SQL 显示来自 Table 的具有条件的数据
PL/SQL Display Data From a Table with a Condition
我正在尝试根据参与者的年龄显示姓名和类别
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
语句,然后在 LOOP
:
中将 part_info
限定符替换为 i
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;
/
我正在尝试根据参与者的年龄显示姓名和类别
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
语句,然后在 LOOP
:
part_info
限定符替换为 i
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;
/