欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

调用存储过程批改表数据无反应

更新时间: 2014-01-05 02:10:56 责任编辑: Author_N1

 

调用存储过程修改表数据无反应
调用的过程如下:
/**
  自动给课外评分为A的总成绩加20分
  各科成绩变量
  math, 
  article,
  language,
  music,
  sport,
  total 总成绩
  average 平匀成绩
  stdid 科目ID
  comments 课外成绩评价
*/
create or replace procedure autocomputer(step in number, in_stat in varchar) is
  rsCursor sys_refcursor;
  commentArray myPackage.myArray;
  math number;
  article number;
  language number;
  music number;
  sport number;
  total number;
  average number;
  stdid number;
  comments varchar(2);
  in_stdinfo myPackage.stdinfo;
  i number;
begin
  i := 1;
  get_comment(commentArray); --调用存储过程获取学生课外评分信息
  open rsCursor for select t.stdid,t.math,t.article,t.language,t.music,t.sport from studnet t where t.step = step;
  loop
    fetch rsCursor into stdid,math,article,language,music,sport;
    exit when rsCursor%notfound;
    total := math+article+language+music+sport;
    for i in 1..commentArray.count loop
      in_stdinfo := commentArray(i);
      if stdid = in_stdinfo.stdid then
        begin
          if in_stdinfo.comments = in_stat then
            begin
              total := total + 20;
              average := total/5;
              update studnet set total = total, average = average where stdid = stdid;
              commit;
              exit;
            end;
          end if;
        end;
      end if;
    end loop;
  end loop;
end autocomputer;

执行后查表数据一点都没变,求高手指点哪里存在问题?多谢!
--参考方法--
 update studnet set total = total, average = average where stdid = stdid;


total
average
stdid


变量名称不要和表中的字段重名。
修改procedure中所有变量的名称,加上前缀
l_
再执行。
--参考方法--
引用:
引用:SQL code?1 update studnet set total = total, average = average where stdid = stdid;
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:10:56
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6649/
本文WWW.DOC100.NET DOC100.NET版权所有。