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 に答える