中国开发网: 论坛: 程序员情感CBD: 贴子 321360
ysb_ysb_ysb: 这个存储过程不知道能不能优化
TMD,一执行就是十几秒
CREATE PROCEDURE StudentRwAsys(@ExamPlan varchar(40), @OrFlag int) AS
declare @Bkrw varchar(20), @Zdrw varchar(20)
declare @YearID varchar(20),@ClassID varchar(20),@SubjectID varchar(20)
declare @Zdrwfs float, @Bkrwfs float
declare @Zdrs float, @Bkrs float
declare @ExecSql nvarchar(500)

Select @Zdrw =prec from SHINSet where ID_ = '11'
Select @Bkrw =prec from SHINSet where ID_ = '22'
delete from SHTempTable
insert into SHTempTable(YearID,ClassID,SubjectID, AllRs)
Select YearID, ClassID,SubjectID, Count(*) from SHExamGrapeScore
Group By YearID,ClassID,SubjectID order by SubjectID, cast(ClassID as Int)

Declare RWCursor CURSOR FOR
Select YearID, ClassID, SubjectID from SHtempTable
Open RWCursor
fetch next from RWCursor into @YearID,@ClassID,@SubjectID
while @@FETCH_STATUS = 0
begin
Set @ExecSql = N'Select @zdrwfs= Min(SubjectScore) from (Select top '+@Zdrw+' percent * from SHExamGrapeScore ' +
' where SubjectID = '''+@SubjectID+'''' +' and YearID = '''+@YearID+''' and ExamPlan = '''+@ExamPlan+''' order by SubjectScore Desc) a '
Exec SP_EXECUTESQL @ExecSql, N'@zdrwfs float output' , @zdrwfs = @Zdrwfs output
Select @Zdrs = Count(*) from SHExamGrapeScore where YearID = @YearID and
ClassID = @ClassID and SubjectScore >= @Zdrwfs and SubjectID = @SubjectID
Set @ExecSql = ' Select @Bkrwfs = min( SubjectScore) from (Select top '+@Bkrw+' percent * from SHExamGrapeScore '+
' where ClassID = '''+@ClassID+''' ' +
' and YearID = '''+@YearID+''' '+
' and ExamPlan = '''+@ExamPlan+''''+
' order by SubjectScore Desc) a '
Exec SP_EXECUTESQL @ExecSql, N'@Bkrwfs float output' , @Bkrwfs = @Bkrwfs output

Select @Bkrs = Count(*) from SHExamGrapeScore where YearID = @YearID and
ClassID = @ClassID and SubjectScore >=@Bkrwfs and SubjectID = @SubjectID
update SHTempTable Set zdrs = @Zdrs ,Bkrs = @Bkrs where YearID= @YearID and ClassID= @ClassID and SubjectID =@SubjectID
fetch next from RWCursor into @YearID,@ClassID,@SubjectID
end
close RWCursor
Deallocate RwCursor
GO

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录