Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 因为我们的教授不允许我们在select语句中使用where子句,所以如何在游标中使用if条件_Oracle_Plsql_Cursor - Fatal编程技术网

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

Oracle 因为我们的教授不允许我们在select语句中使用where子句,所以如何在游标中使用if条件,oracle,plsql,cursor,Oracle,Plsql,Cursor,我们的问题是显示所有国家的名称正好是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; 但是,我的教授说,不能在select语句中使用whe

我们的问题是显示所有国家的名称正好是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;
但是,我的教授说,不能在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输出中未返回任何内容

希望有人能帮助我,我花了一整晚的时间来思考,拜托

变量country不包含任何值,它为null,所以如果条件从不为true且循环从不执行。样本数据会有所帮助;同时,看看这是否有帮助

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;

别忘了打开serveroutput。

非常感谢您,先生,隐式游标可以工作,但如何在显式游标中执行它呢。例如,如果我编写这样的代码,声明游标计数器X是select*from country\u cont,它将不起作用;如果LengthCourtX.country=5,则从计数器X循环中的计数器开始,然后dbms|U输出。put|U linecounter.country | |“”| | counter.continent;如果结束;端环;终止