Sto tentando di scrivere una stored procedure che verificherà l'esistenza di un record e se non esiste fare un inserto restituendo il SCOPE_IDENTITY
e se esiste semplicemente restituire l'ID di l'oggetto. Dopo aver ottenuto queste informazioni nella procedura, ho bisogno di eseguire ulteriori elaborazioni con esso e sono incerto su come ottenere il SCOPE_IDENTITY
all'interno di un'istruzione IF...ELSE
.Imposta variabile su SCOPE_IDENTITY all'interno dell'istruzione IF
miei due tabelle:
CREATE TABLE [dbo].[ActionTable] (
[ActionID] [int] IDENTITY(1, 1) NOT NULL,
[ObjectID] [int] NOT NULL,
[ActionName] [nvarchar](255) NOT NULL
)
CREATE TABLE [dbo].[ObjectTable] (
[ObjectID] [int] IDENTITY(1, 1) NOT NULL,
[ObjectName] [nvarchar](255) NOT NULL
)
stored procedure:
CREATE PROCEDURE [dbo].[SetAction]
@ActionName [nvarchar](255),
@ObjectName [nvarchar](255)
AS
DECLARE @ObjectID [int]
--I have tried the following
IF NOT EXISTS(SELECT ObjectID FROM ObjectTable WHERE ObjectName = @ObjectName)
INSERT INTO ObjectTable(ObjectName)VALUES(@ObjectName)
--Here I need to set @ObjectID = SELECT SCOPE_IDENTITY()
ELSE
SELECT @ObjectID = ObjectID FROM ObjectTable WHERE ObjectName = @ObjectName
Ciò restituisce Incorrect syntax near the keyword 'ELSE'
Quale sarebbe il metodo migliore per realizzare questo ricerca/inserire? Dopo ho l'ID Io poi effettuare le seguenti operazioni
INSERT INTO ActionTable(ObjectID, ActionName) VALUES(@ObjectID, @ActionName)
SELECT SCOPE_IDENTITY()