как использовать условие if в курсоре, потому что наш преподаватель не позволяет использовать предложение where в операторе select - PullRequest
1 голос
/ 21 октября 2019

Наш вопрос показывает все страны, названия которых в точности состоят из 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 в операторе select, и вы должны отобразить все страны и континенты.

поэтому я попробовал этот код:

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 успешно завершена, но ничего не возвращается в вывод СУБД

Надеюсь, кто-то может мне помочь, япотратил всю ночь на размышления, пожалуйста!

1 Ответ

1 голос
/ 21 октября 2019

Переменная 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.

...