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

如何去设计呢

更新时间: 2014-01-05 02:13:52 责任编辑: Author_N1

 

怎么去设计呢
如果说 是做的一个网上选课系统,需要控制一个课程的选课人数,可以在选课表上面加一个字段最大选课人数,和当前选课人数 对吧? 可不可以去设计一个 函数或者说过程 去实现当插入一条选课数据的时候 判断当前这门课程的最多选课人数,如果小于就可以插入,不行就不能插入,??? 如果可以希望 举个例子 或者代码
--参考方法--
1)一个课程表,包含最大选题人数
2)选题表,不用设置已选人数字段
3)触发器instead of实现超员则不插入数据,like this:

CREATE OR REPLACE TRIGGER simo_tab_insert
       INSTEAD OF INSERT ON v_simo_tab
    BEGIN
      declare
      v_id number;
      begin
      select count(*) into v_id from simo_tab where name = :new.name;
      dbms_output.put_line('Simo>>>>>>>>v_id:'
--参考方法--
v_id);
      if v_id>0 then
        insert into simo_tab(id, name)
            values (:NEW.id,:new.name);
      end if;
      end;
   END;

--参考方法--
引用:
Quote: 引用:

下面的就能实现你要做的啊,你觉得有什么问题么??
create or replace function fun_st_course(crno in number, stno in number,stno in number) return integer is
 PRAGMA AUTONOMOUS_TRANSACTION; 
  Result integer;
  v_mx number;
  v_cur number;
begin
  select maxnum,course_curnum into v_mx,v_cur from tb_course where CourseNo=crno;
  if v_mx>=v_cur+1 then
    insert into tb_fin_course(CourseNo,StudentNo,TeacherNo) values (crno,stno,stno);
  update tb_course set course_curnum=course_curnum+1 where CourseNo=crno;
  commit;
  Result:=1;
  return(Result);
  else 
   Result:=0;
   return(Result);
end if;
end fun_st_course;


你写的异常我没看懂 ,还有返回值 也没看懂,能否用过程来写

他是通过函数来判断是否对表有进行更改。如果函数返回1表明选课成功并且插入了记录和更改了当前选课的人数(+1),如果返回0,表明人数已满,选课不成功。
这样做和用过程做没什么区别啊。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

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