这题的大体意思是这样的:
     创建一个学生表和一个课程表,课程表 里面已经有几门可选课程,创建一个过程,调用课程时可以实现: 在向学生表插入信息,这信息包含学生选修课程,选修课程必须在 课程表 里面有的,如果课程表中没有则为非法插入,就发生异常, 过程要捕获这个异常。

解决方案 »

  1.   

    create or replace procedure proc_name(p_name in varchar2,p_course in varchar2) as
        v_count number;
        exp exception ;
    begin 
        select count(*) into v_count from course表 where c_name =p_count;
        if v_count=1 then 
            insert into student(...) value (....,p_course);
        else
            raise exp;
        end if;
        commit;
        exception
            when exp then 
                if v_count=0 then 
                    insert into exception表名 values(...,'没有记录');
                else
                    insert into exception表名 values(...,'同一课程设置了两次');
                end if;
            when others then 
                insert into exception表名 values(...,'插入学生表时出错');
        commit;
    end ;--注意,表名不要和oracle的关键字相同