Setzen Sie die variable auf SCOPE_IDENTITY innerhalb der IF-Anweisung

Bin ich zu schreiben versucht, eine gespeicherte Prozedur, die prüft, ob die Existenz eines Datensatzes, und wenn es nicht vorhanden ist, muss eine insert-Rückkehr der SCOPE_IDENTITY und wenn es vorhanden ist, schicken Sie einfach die ID des Objekts. Nachdem ich diese information erhalten Sie in der Prozedur, die ich tun müssen, um die weitere Verarbeitung mit es und ich bin nicht sicher, wie das zu erreichen immer die SCOPE_IDENTITY innerhalb einer IF...ELSE - Anweisung.

Meine beiden Tabellen:

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
)

Gespeicherte Prozedur:

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

Zurück Incorrect syntax near the keyword 'ELSE'

Was wäre die beste Methode für die Durchführung dieser lookup/einfügen? Nachdem ich die ID, die ich dann die folgenden

INSERT INTO ActionTable(ObjectID, ActionName) VALUES(@ObjectID, @ActionName)

SELECT SCOPE_IDENTITY()

InformationsquelleAutor jon3laze | 2011-09-07

Schreibe einen Kommentar