Разработка подсистемы учета успеваемости студентов Байкальского государственного университета экономики и права

from HoursVars

where CodVar = @CodVar

select @CodOrganization = isNULL(@CodOrganization,1),

@Lec = isNULL(@Lec,0), @Sem = isNULL(@Sem,0), @Sam = isNULL(@Sam,0)

--select @err = 'Mark = '+str(@CodOrganization)

execute dbo.e_DetectCodVar @CodSub, @CodSubType, @CodOrganization,

@CodKaf, @Lec, @Sem, @Sam, @ECTScretits, @CodVarNEW output

--raiserror(@err, 16,1);

select

@CodOp = 3

if not exists(select * from Exam

where

CodStudent=@CodStudent

and Course=@Course

and NumTerm=@NumTerm

and CodExType=@CodExType

and mark = @mark

and CodVar=@CodVar

) select @CodOp = 2

--Добавление

IF @CodOp=2

begin

Insert Exam (CodStudent,Course,NumTerm,CodExType,Mark,CodECTSMark,

CodPrep,DateExam,CodVar,CodVUZ)

Values(@CodStudent,@Course,@NumTerm,@CodExType,@Mark,@CodECTSMark,

@CodPrep,@DateExam,@CodVarNEW,@CodVUZ)

-- if @@error <> 0 rollback tran else commit tran

return

end

--Изменение

IF @CodOp=3

begin

if exists(select * from Exam

where

CodStudent=@CodStudent

and Course=@Course

and NumTerm=@NumTerm

and CodExType=@CodExType

and mark = @mark

and CodVar=@CodVarNEW

and CodECTSmark = @CodECTSmark

and CodPrep = @CodPrep

and DateExam = @DateExam

and CodVUZ = @CodVUZ

) return

UPDATE Exam SET CodECTSMark=@CodECTSMark,

CodPrep=@CodPrep, DateExam=@DateExam, CodVUZ=@CodVUZ

WHERE CodStudent=@CodStudent

and Course=@Course

and NumTerm=@NumTerm

and CodExType=@CodExType

and mark = @mark

and CodVar=@CodVar

-- if @@error <> 0 rollback tran else commit tran

end

END

/**************************************************************

Предназначена для изменения существующей оценки в таблице Exam

Параметры делятся на три группы:

- старые значения ключевых полей (для идентификации изменяемой оценки);

- новые значения ключевых полей;

- новые значения неключевых полей.

Предварительно необходимо определить CodVarNEW для изменяемой оценки

Сначала производится удаление оценки, а затем вставка с новыми значениями

ЗУБКОВ СЕРГЕЙ

28\05\2002 17:21

****************************************************************/

CREATE PROCEDURE [dbo].[e_UpdateMark]

(

@CodStudent int,

@CodVar int, -- ключевые поля, определяющие, какую оценку меняем

@Course tinyint,

@NumTerm tinyint,

@CodExType tinyint,

@Mark tinyint,

@CodVarNEW int, --набор новых значений ключевых полей

@CourseNEW tinyint,

@NumTermNEW tinyint,

@CodExTypeNEW tinyint,

@MarkNEW tinyint,

@CodECTSMark smallint, -- значение неключевых полей

@CodPrep int,

@DateExam smalldatetime,

@CodVUZ int

)as

BEGIN

--if @CodECTSMark IS NULL BEGIN RAISERROR('Не указана рейтинговая оценка!',16,-1) return END

if @DateExam IS NULL BEGIN RAISERROR('Не указана дата!',16,-1) return END

if @CodVUZ IS NULL BEGIN RAISERROR('Не указан ВУЗ!',16,-1) return END

if @CodECTSMark IS NULL SELECT @CodECTSMark=0

BEGIN TRAN

-- удаляем старую оценку

exec e_DeleteMark @CodStudent, @CodVar, @Course, @NumTerm, @CodExType, @Mark

-- добавляем новую

exec e_AddMark @CodStudent, @CodVarNEW, @CourseNEW, @NumTermNEW, @CodExTypeNEW, @MarkNEW, @CodECTSMark, @CodPrep, @DateExam, @CodVUZ

IF @@ERROR<>0

BEGIN

ROLLBACK TRAN

END

ELSE COMMIT TRAN

END

/******************************************************************************

Object: Stored Procedure dbo.e_DetectCodVar Script Date: 17.11.2001 15:03:37

Процедура определяет @CodVar по содержанию варианта (остальные параметры)

Если варианта нет, то он заносится в HoursVars

****************************************************************************/

CREATE PROCEDURE [dbo].[e_DetectCodVar]

(@CodSub int, @CodSubType tinyint, @CodOrganization tinyint,

@CodKaf tinyInt, @Lec SmallInt, @Sem SmallInt, @Sam SmallInt, @ECTScretits float,

@CodVar int OUTPUT)

AS

--

-- Проверка существования варианта

--

IF EXISTS(SELECT * FROM HoursVars WHERE

CodSub=@CodSub AND CodSubType=@CodSubType

AND CodOrganization=@CodOrganization AND CodKaf=@CodKaf

AND Lec = @Lec AND Sem = @Sem AND Sam=@Sam AND ECTScretits = @ECTScretits)

--

-- Возвращается номер существующего варианта

--

SELECT @CodVar=CodVar FROM HoursVars WHERE

CodSub=@CodSub AND CodSubType=@CodSubType

AND CodOrganization=@CodOrganization AND CodKaf=@CodKaf

AND Lec = @Lec AND Sem = @Sem AND Sam=@Sam AND ECTScretits = @ECTScretits

ELSE

BEGIN

BEGIN TRAN

--

-- Выбирается свободный номер

--

SELECT @CodVar=curentvalue from autoincdata where tablename='HoursVars'

--

-- Добавляется вариант

--

INSERT HoursVars

VALUES (@CodVar,@CodSub,@CodSubType,@CodOrganization,@CodKaf,@Lec,@Sem,@Sam,@ECTScretits)

if @@error<>0

begin

rollback tran

--

-- При аварийном завершении возвращается -1

--

SELECT @CodVar=-1

end

else

begin

commit tran

end

END

Страница:  1  2  3  4  5  6  7  8  9  10  11  12  13 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы