我已经编写了这个存储过程,当我执行它时,我一直收到错误...
Msg 102,Level 15,State 1,Procedure s_Add $ Subject $ Info,第127行 '@V'附近的语法不正确。
当我去第127行并环顾四周时,我看不到该行甚至是该区域的语法错误。有没有我没看到的东西?这是存储过程:
CREATE PROCEDURE s_Add$Subject$Info
(
@SubjectName varchar(50),
@SubjectDescription varchar(max),
@QuizIDString varchar(100),
@GamesIDString varchar(100),
@VideoIDString varchar(100)
)
as
--declare variables
declare @theSubID int
declare @quizIDLength int
declare @gamesIDLength int
declare @videoIDLength int
declare @quizIDs varchar(200)
declare @gamesIDs varchar(200)
declare @videoIDs varchar(200)
declare @numberCount int
declare @sTemp varchar(100)
--initializing variables
set @quizIDLength = LEN(@QuizIDString)
set @gamesIDLength = LEN(@GamesIDString)
set @videoIDLength = LEN(@VideoIDString)
set @quizIDs = ''
set @gamesIDs = ''
set @videoIDs = ''
set @numberCount = 1
--declare temp tables
declare @Q table --Quiz
(
QuizID varchar(100),
SubjectID int
)
declare @G table --Games
(
GamesID varchar(100),
SubjectID int
)
declare @V table --Videos
(
VideoID varchar(100),
SubjectID int
)
insert into[Subjects]
(SubjectName, SubjectDescription)
values
(@SubjectName, @SubjectDescription)
set @TheSubID = @@IDENTITY
--Check to see what strings are full then entering ids if true
--Quizzes first
if(@QuizIDLength > 0)
begin
while(@numberCount <=@quizIDLength)
begin
set @sTemp = SUBSTRING(@QuizIDString, @numberCount, 1)
if(@sTemp = ',')
begin
insert @Q (QuizID, SubjectID) values (@quizIDs, @theSubID)
set @quizIDs = ''
end
if(@sTemp <> ',')
begin
set @quizIDs = @quizIDs + @sTemp
end
set @numberCount = @numberCount + 1
end
--Games second
if(@gamesIDLength > 0)
begin
while(@numberCount <=@gamesIDLength)
begin
set @sTemp = SUBSTRING(@GamesIDString, @numberCount, 1)
if(@sTemp = ',')
begin
insert @G (GamesID, SubjectID) values (@gamesIDs, @theSubID)
set @gamesIDs = ''
end
if(@sTemp <> ',')
begin
set @gamesIDs = @gamesIDs + @sTemp
end
set @numberCount = @numberCount + 1
end
--Videos third
if(@videoIDLength > 0)
begin
while(@numberCount <=@videoIDLength)
begin
set @sTemp = SUBSTRING(@VideoIDString, @numberCount, 1)
if(@sTemp = ',')
begin
insert @V (VideoID, SubjectID) values (@videoIDs, @theSubID)
set @videoIDs = ''
end
if(@sTemp <> ',')
begin
set @videoIDs = @videoIDs + @sTemp
end
set @numberCount = @numberCount + 1
end
--inserting the ids to subjectinfo table
insert into [SubjectInfo]
(SubjectID, QuizID)
select SubjectID, QuizID
from @Q
--Games
insert into [SubjectInfo]
(SubjectID, GameID)
select SubjectID, GameID
from @G
--Video
insert into [SubjectInfo]
(SubjectID, VideoID)
select SubjectID, VideoID
from @V
答案 0 :(得分:5)
如果你使用了更好的缩进格式,你很容易就会发现问题是你遗漏了一些END
语句:
CREATE PROCEDURE s_Add$Subject$Info
(
@SubjectName varchar(50),
@SubjectDescription varchar(max),
@QuizIDString varchar(100),
@GamesIDString varchar(100),
@VideoIDString varchar(100)
)
as
--declare variables
declare @theSubID int
declare @quizIDLength int
declare @gamesIDLength int
declare @videoIDLength int
declare @quizIDs varchar(200)
declare @gamesIDs varchar(200)
declare @videoIDs varchar(200)
declare @numberCount int
declare @sTemp varchar(100)
--initializing variables
set @quizIDLength = LEN(@QuizIDString)
set @gamesIDLength = LEN(@GamesIDString)
set @videoIDLength = LEN(@VideoIDString)
set @quizIDs = ''
set @gamesIDs = ''
set @videoIDs = ''
set @numberCount = 1
--declare temp tables
declare @Q table --Quiz
(
QuizID varchar(100),
SubjectID int
)
declare @G table --Games
(
GamesID varchar(100),
SubjectID int
)
declare @V table --Videos
(
VideoID varchar(100),
SubjectID int
)
insert into[Subjects]
(SubjectName, SubjectDescription)
values
(@SubjectName, @SubjectDescription)
set @TheSubID = @@IDENTITY
--Check to see what strings are full then entering ids if true
--Quizzes first
if(@QuizIDLength > 0)
begin
while(@numberCount <=@quizIDLength)
begin
set @sTemp = SUBSTRING(@QuizIDString, @numberCount, 1)
if(@sTemp = ',')
begin
insert @Q (QuizID, SubjectID) values (@quizIDs, @theSubID)
set @quizIDs = ''
end
if(@sTemp <> ',')
begin
set @quizIDs = @quizIDs + @sTemp
end
set @numberCount = @numberCount + 1
end
--Games second
if(@gamesIDLength > 0)
begin
while(@numberCount <=@gamesIDLength)
begin
set @sTemp = SUBSTRING(@GamesIDString, @numberCount, 1)
if(@sTemp = ',')
begin
insert @G (GamesID, SubjectID) values (@gamesIDs, @theSubID)
set @gamesIDs = ''
end
if(@sTemp <> ',')
begin
set @gamesIDs = @gamesIDs + @sTemp
end
set @numberCount = @numberCount + 1
end
--Videos third
if(@videoIDLength > 0)
begin
while(@numberCount <=@videoIDLength)
begin
set @sTemp = SUBSTRING(@VideoIDString, @numberCount, 1)
if(@sTemp = ',')
begin
insert @V (VideoID, SubjectID) values (@videoIDs, @theSubID)
set @videoIDs = ''
end
if(@sTemp <> ',')
begin
set @videoIDs = @videoIDs + @sTemp
end
set @numberCount = @numberCount + 1
end
--inserting the ids to subjectinfo table
insert into [SubjectInfo]
(SubjectID, QuizID)
select SubjectID, QuizID
from @Q
--Games
insert into [SubjectInfo]
(SubjectID, GameID)
select SubjectID, GameID
from @G
--Video
insert into [SubjectInfo]
(SubjectID, VideoID)
select SubjectID, VideoID
from @V
答案 1 :(得分:3)
您错过了into
关键字
insert @V (VideoID, SubjectID) values (@videoIDs, @theSubID)
^-------here