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

时间:2019-10-21 18:10:34

标签: oracle plsql cursor

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

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;

但是我的教授说,您不能在select语句中使用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输出中未返回任何内容

希望有人可以帮助我,我整夜都在考虑它!

1 个答案:

答案 0 :(得分:1)

变量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