0

我在这个存储过程中遇到错误:

ALTER PROCEDURE [dbo].[spc_InsertSubjectToContentRelation]
(
    @pCourseGUID NVARCHAR(MAX), 
    @pAssessmentIds NVARCHAR(MAX),
    @pSubjectId NVARCHAR(MAX),
    @pVideoIds NVARCHAR(MAX)
)
AS
BEGIN
SET NOCOUNT ON;
    
IF EXISTS (SELECT * FROM SubjectToAssessmentAndVideoRelation WHERE SubjectId = @pSubjectId AND CourseGuid = @pCourseGuid)
   UPDATE SubjectToAssessmentAndVideoRelation SET (AssociatedAssessments = @pAssessmentIds, AssociatedVideos = @pVideoIds) WHERE SubjectId = @pSubjectId AND CourseGuid = @pCourseGuid
ELSE
    INSERT INTO SubjectToAssessmentAndVideoRelation VALUES (@pCourseGUID, @pAssessmentIds, @pSubjectId, @pVideoIds)
END

错误是:

过程 spc_InsertSubjectToContentRelation,第 14 行
'(' 附近的语法不正确。

这个查询有什么问题?

编辑:

EXISTS我在发布代码时忘记添加。我的实际代码是存在的。我收到了存在的错误

4

2 回答 2

2

您的IF语句没有做任何事情,它只包含一个表达式:

IF  (SELECT * FROM SubjectToAssessmentAndVideoRelation WHERE SubjectId = @pSubjectId AND CourseGuid = @pCourseGuid)

它需要是这样的:

IF  (SELECT * FROM SubjectToAssessmentAndVideoRelation WHERE SubjectId = @pSubjectId AND CourseGuid = @pCourseGuid) = 0

--那就按你的逻辑

您可能会通过使用以下方式来追求这样的事情IF EXISTS

IF  EXISTS (SELECT * FROM SubjectToAssessmentAndVideoRelation WHERE SubjectId = @pSubjectId AND CourseGuid = @pCourseGuid)

希望有帮助。

于 2013-06-25T08:19:11.617 回答
2
IF  (SELECT * FROM SubjectToAssessmentAndVideoRelation WHERE SubjectId = @pSubjectId AND CourseGuid = @pCourseGuid)

这不是一个有效的测试。你的意思是IF EXISTS(...

于 2013-06-25T08:19:19.930 回答