运行环境:sql server 2000.
设计目的:从多个表中自动筛选数据然后插入到新的表中create procedure P_ArangeCourse(@class_id Varchar(255))
                                                     --class_id 从用户界面得到
as
declare @S_Msg Varchar(255);  --消息提示
declare @Name_Course Varchar(255); --课程名称
declare @Name_room Varchar(255);   --教室名称
--declare @Name_class Varchar(255);  --班级名称
declare @Name_teacher Varchar(255);  --老师名称
declare @Name_gar     Varchar(255);  --辅导员
declare @N_Times integer;            --检测上课次数
declare @D_days integer;             --纪录上课次数
declare @Date_date datetime;         --纪录日期
declare @i integer;                          --循环条件
begin
--确定什么课最先上
select course_Name from Course_Category
where Course_level = (select max(Course_level) from Course_category);
--确定一种课程的上课次数
select Course_days from course_Category
where Name_Course = (select course_Name from Course_Category
where Course_level = 
(select max(Course_level) from Course_category));
--确定教室
set @Name_room = (select top 1 room_Name from Resource_Info where Status = 1);
update Resource_Info set Status = 0 where room_Name = Name_room;

--确定老师
set @Name_teacher = (select top 1 teacher_name from teacher_Info where Status = 1 and teacher_Identity like '教员');
update teacher_Info set Status = 0 where teacher_Info = Name_teacher;

--确定辅导员
set @Name_teacher = (select top1 teacher_name from teacher_Info where Status = 1 and teacher_Identity like '辅导员');
update teacher_Info set Status = 0 where teacher_Info = Name_teacher; --当前课程上完接着下一种课程
--Name_class = select top 1 class_name from class where Status = 1;  --班级id
set @Name_Course = (select course_Name from Course_Category
where Course_level = (select max(Course_level) from Course_category));
set @N_Times = (select count(CC_CrsSign) from Course_Info);   
set @D_days = 1;
        --检测当前的课程是不是已经结束
for i in @N_Times..(select Course_times from Course_category) loop
set @D_days = @D_days+1;
set @Date_date = (select dateadd(dd,D_days,getdate()));
if @N_Times >= (select Course_times from Course_category) then
goto begin    --怎么跳转??
else
insert into CC_Info(cc_classId,cc_date,CC_CrsSign,cc_Crsnumber,cc_Time,cc_TecName,Cc_RomSign,CC_garName,CC_record,Status)
                    values(@class_id,@Date_date,@Name_Course,@N_times,'上午',@Name_teacher,'R',@Name_gar,null,0);
end if
end loop

go  Exception
when others then   --为什么有错?
@S_Msg='Data Err!';
Rollback;end;