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