你这里addstu字段是不是应该放在tb_course表里;
同时这个表还订制一个maxnum字段记录30是最大数,
每插入一条对应课程学生关系记录到tb_fin_course,就同时更新tb_course.addstu加1,判断不超过maxnum=30的前提下,以上都可以在一个存储过程中实现
同时这个表还订制一个maxnum字段记录30是最大数,
每插入一条对应课程学生关系记录到tb_fin_course,就同时更新tb_course.addstu加1,判断不超过maxnum=30的前提下,以上都可以在一个存储过程中实现
解决方案 »
- ORACLE循环表OR游标(基础问题)
- 无效数字、单行子查询返回多行
- plsql客户端连接远程服务器
- 紧急,oracle packages 找不到了? 但是程序可以运行~~~
- 请问CSDN用得是什么数据库做后台???
- 导入导出库的问题
- oracle中怎么使用导入的数据库?
- 如何将表和字段的注释输出?
- 在VB开发环境下运行正常,但编译成exe可执行文件后运行提示:"运行时错误-2147467259(80004005) ORA-06413:连接未打开" 该如何解决?
- dataguard搭建的时候报错ORA-01017: invalid username/password; logon denied
- 数据库查询结果进行分类
- 这个过程怎么写,最后里面有游标
Table created
SQL> CREATE OR REPLACE TRIGGER idletesttrigger BEFORE INSERT ON idletest
2 DECLARE v NUMBER;
3 BEGIN
4 SELECT COUNT(ID) INTO v FROM idletest;
5 IF v >= 3 THEN
6 RAISE_APPLICATION_ERROR(-20001, 'max is 3');
7 END IF;
8 END;
9 /
Trigger created
SQL>
SQL> INSERT INTO idletest VALUES(1);
1 row inserted
SQL> INSERT INTO idletest VALUES(2);
1 row inserted
SQL> INSERT INTO idletest VALUES(3);
1 row inserted
SQL> INSERT INTO idletest VALUES(4);
INSERT INTO idletest VALUES(4)
ORA-20001: max is 3
ORA-06512: 在 "RCOTRPR1.IDLETESTTRIGGER", line 5
ORA-04088: 触发器 'RCOTRPR1.IDLETESTTRIGGER' 执行过程中出错
SQL>
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;
SQL> exec :abc:=fun_st_course(1234,002,300);
PL/SQL procedure successfully completed
abc
---------
1