diff --git a/PlotLine/Sql/099_FixSceneCharacterSaveQuotedIdentifier.sql b/PlotLine/Sql/099_FixSceneCharacterSaveQuotedIdentifier.sql new file mode 100644 index 0000000..cc199d7 --- /dev/null +++ b/PlotLine/Sql/099_FixSceneCharacterSaveQuotedIdentifier.sql @@ -0,0 +1,52 @@ +SET ANSI_NULLS ON; +GO +SET QUOTED_IDENTIFIER ON; +GO + +CREATE OR ALTER PROCEDURE dbo.SceneCharacter_Save + @SceneCharacterID int = NULL, @SceneID int, @CharacterID int, @RoleInSceneTypeID int = NULL, @PresenceTypeID int = NULL, + @LocationID int = NULL, @EntryLocationID int = NULL, @ExitLocationID int = NULL, + @AppearanceNotes nvarchar(max) = NULL, @OutfitDescription nvarchar(max) = NULL, @PhysicalCondition nvarchar(max) = NULL, + @EmotionalState nvarchar(max) = NULL, @KnowledgeNotes nvarchar(max) = NULL +AS +BEGIN + SET NOCOUNT ON; + + IF @SceneCharacterID IS NULL OR @SceneCharacterID = 0 + BEGIN + SELECT @SceneCharacterID = SceneCharacterID + FROM dbo.SceneCharacters + WHERE SceneID = @SceneID AND CharacterID = @CharacterID; + END + + IF @SceneCharacterID IS NULL OR @SceneCharacterID = 0 + BEGIN + INSERT dbo.SceneCharacters (SceneID, CharacterID, RoleInSceneTypeID, PresenceTypeID, LocationID, EntryLocationID, ExitLocationID, + AppearanceNotes, OutfitDescription, PhysicalCondition, EmotionalState, KnowledgeNotes) + VALUES (@SceneID, @CharacterID, @RoleInSceneTypeID, @PresenceTypeID, @LocationID, @EntryLocationID, @ExitLocationID, + @AppearanceNotes, @OutfitDescription, @PhysicalCondition, @EmotionalState, @KnowledgeNotes); + + SET @SceneCharacterID = CAST(SCOPE_IDENTITY() AS int); + END + ELSE + BEGIN + UPDATE dbo.SceneCharacters + SET SceneID = @SceneID, + CharacterID = @CharacterID, + RoleInSceneTypeID = @RoleInSceneTypeID, + PresenceTypeID = @PresenceTypeID, + LocationID = @LocationID, + EntryLocationID = @EntryLocationID, + ExitLocationID = @ExitLocationID, + AppearanceNotes = @AppearanceNotes, + OutfitDescription = @OutfitDescription, + PhysicalCondition = @PhysicalCondition, + EmotionalState = @EmotionalState, + KnowledgeNotes = @KnowledgeNotes, + UpdatedDate = SYSUTCDATETIME() + WHERE SceneCharacterID = @SceneCharacterID; + END + + SELECT @SceneCharacterID; +END; +GO