You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PL/SQL函数语法错误及‘PL/SQL: Statement ignored’错误修复求助

错误修复方案

核心错误原因

游标c1查询的是reg表的stuno字段,在FOR循环中,循环变量i是游标记录类型,并非单个字段值,直接用i = num_stu比较会触发类型不匹配错误,进而导致c_c := c_c + 1;语句被忽略。

修复后的代码

方案1:修正游标循环的字段访问

create or replace function number_of_course(num_stu STUDENTS.STUNO%TYPE) 
return number is
 c_c number :=0;
 cursor c1 is SELECT stuno from reg; 
begin
for i in c1 loop
  -- 访问游标记录中的stuno字段进行比较
  if i.stuno = num_stu then 
    c_c := c_c + 1 ;
  end if;
end loop;
RETURN c_c;
end number_of_course;

方案2:用SQL直接统计(更高效推荐)

无需通过游标循环逐行判断,直接借助SQL聚合函数统计匹配记录数,性能更优:

create or replace function number_of_course(num_stu STUDENTS.STUNO%TYPE) 
return number is
  c_c number :=0;
begin
  SELECT COUNT(*) INTO c_c
  FROM reg
  WHERE stuno = num_stu;
  
  RETURN c_c;
end number_of_course;

验证说明

  • 方案1通过修正字段访问方式解决了类型不匹配问题,消除了语句被忽略的错误;
  • 方案2彻底避免了游标循环,利用Oracle内置聚合函数完成统计,代码更简洁且执行效率更高,更适合这类统计场景。

内容的提问来源于stack exchange,提问作者Dana Almameh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:55:25