我需要使用循环在单独的列表中打印出男性和女性朋友,但是收到错误:
'循环06550。00000 -“行%s,列%s:\n%s”* 原因:PL/SQL编译错误。* 行动:'
DECLARE
v_gender VARCHAR2(500);
v_male VARCHAR2(1);
v_female VARCHAR2(1);
BEGIN
FOR i IN (select * from friend_name)
LOOP
v_gender := 'Gender ' || i.gender ||', '|| i.first_name ||', '|| i.last_name;
dbms_output.put_line(v_gender);
v_male := null;
v_female := null;
FOR J IN (SELECT * FROM friend_name)LOOP
IF(j.gender = 'M')
THEN dbms_output.put_line(first_name ||', '|| last_name ||', '|| v_male);
ELSE
dbms_output.put_line(first_name ||', '|| last_name ||', '|| v_female);
END IF;
END LOOP;
END;
你能帮我看看丢了什么吗?
2条答案
按热度按时间o2rvlv0m1#
您得到的错误与您没有
END
第一个LOOP
有关。如果你修复它,你会得到另一个错误,因为你没有正确地 * 限定 *J
游标变量(即不只是first_name
,而是j.first_name
)。固定后,带样品表:
程序 * 工程 *
并产生以下输出:
我不知道这是否是你真正想要的,因为你没有发布想要的结果,但是-考虑一下这样的事情:
或者,使用集合?
有很多选择(像往常一样)。
xt0899hw2#
您可以使用参数化光标,然后为每个性别循环:
或者你可以使用光标来查找不同的性别,然后使用参数化查询来查找该性别的名称:
或者,如果您只需要显示名称,那么您不需要使用多个光标;相反,只需按性别对查询进行排序:
其中,对于样本数据:
所有输出:
fiddle