Create proc SaveInfo ( ---參數列表不再逐一書寫 @subjectList varchar(400)) as begin tran --新增或修改主表 省略 DECLARE @subjectID int, @subjectIDsLen int,--科目長度 @subjectIDLen int,--單個科目長度 @nStart INT , -- 記錄查找的起始位置 @nLast INT -- 記錄‘,'的位置 select @subjectIDsLen=len(@SubjectIDs),@nStart=1,@nLast=0 DELETE Tb_StudentSubject WHERE StudentId=@sId --刪除相關的全部記錄 IF(@subjectIDsLen>0) BEGIN while(@nStart<@subjectIDsLen) BEGIN set @nLast=charindex(',',@SubjectIDs,@nStart)--從第@nStart個位置開始記錄逗號的位置 set @subjectIDLen=@nLast-@nStart --記錄每個subjectID的長度 set @subjectID=substring(@SubjectIDs,@nStart,@subjectIDLen)--獲取一個subjectID Insert Into Tb_StudentSubject(StudentId,SubjectID)values(@sId,@subjectID) set @nStart=@nLast+1--設置下次查找的起始位置 END END if @@Error=0 commit transaction else rollback transaction End