Я написал это Sp, чтобы вставить/обновить таблицу UserExams, которые содержат (UserID, ExamID, studentMark) Мне нужно добавить новую отметку для ученика, у которого нет знака , и обновить оценку ученика, если она уже существует я использовать Split функции, возвращающие таблицы содержат (ID, vItem)Update From & Select Into To ignore Duplicate
Я не сейчас, где есть ошибка здесь может кто-нибудь помочь мне, пожалуйста там ошибки я получил это: Многолетние часть идентификатора «UserExams. UserID "не может быть привязан.
ALTER PROC [dbo].[InsertUserMarks]
(
@pSemesterID int,
@pCourseID int,
@pExamID int,
@pClassID int,
@pUserID varchar(8000),
@pMarks varchar(8000)
)
as
--save the values of MaxMark To check if there is any Mark higher than the full mark if so then stop execution
DECLARE @vTestMaxMark decimal(5,2)
SET @vTestMaxMark = (select ExamMark from Exams where [email protected])
IF EXISTS (select 'true' from Split(@pMarks,',') WHERE vItem>@vTestMaxMark)
begin
print('Operation cannot complete; there are one or more Mark ABOVE the Max value')
return
end
update UserExams
Set StudentMark=MA.vItem
from split(@pUserID,',') us
inner join split(@pMarks,',') ma on us.ID = ma.id
where UserExams.UserID=US.vItem
and [email protected]
--Insert
insert into UserExams
select us.vItem,1,ma.vItem,system_user,getdate(),null,null from
split(@pUserID,',') us
inner join split(@pMarks,',') ma on us.ID = ma.id
WHERE NOT EXISTS (
SELECT 'True'
FROM split(@pUserID,',') us
inner join split(@pMarks,',') ma on us.ID = ma.id
where UserExams.UserID=US.vItem
and [email protected]
)