如何在光标中使用 if 条件,因为我们的教授不允许我们在 select 语句中使用 where 子句



我们的问题是显示名称正好有 5 个字母长度的所有国家/地区。这是光标代码,我想在其中添加 if 条件。

declare
cursor cursor_full is select * from country_cont;
begin
for counter in cursor_full 
loop 
dbms_output.put_line(counter.country|| ' ' || counter.continent);
end loop; 
end;

但是,我的教授说,您不能在选择语句中使用where子句,而应该显示所有国家和大陆。

所以我尝试了这段代码:

declare
country varchar(50);
cursor cursor_full is select * from country_cont;
begin
if length(country)=5 then
for counter in cursor_full 
loop 
dbms_output.put_line(counter.country|| ' ' || counter.continent);
end loop; 
end if;
end;

脚本输出显示 PL/SQL 过程成功完成,但 DBMS 输出中没有返回任何内容

希望有人能帮我,我花了一整夜的时间考虑一下,拜托!

变量country不包含任何值,它是null的,因此if条件永远不会为真,并且永远不会执行loop。样本数据会有所帮助;同时,看看这是否有帮助。

begin
for cur_r in (select * from country_cont) loop
if length(cur_r.country) > 5 then
dbms_output.put_line(cur_r.country|| ' ' || cur_r.continent);
end loop; 
end;

不要忘记set serveroutput on.

相关内容

最新更新