के अंदर SCOPE_IDENTITY को वैरिएबल सेट करें, मैं एक संग्रहित प्रक्रिया लिखने की कोशिश कर रहा हूं जो रिकॉर्ड के अस्तित्व की जांच करेगा और यदि यह मौजूद नहीं है तो SCOPE_IDENTITY
लौटने वाला एक डालने और यदि यह मौजूद है तो बस आईडी की वापसी करें उदेश्य। प्रक्रिया में इस जानकारी को प्राप्त करने के बाद मुझे इसके साथ आगे प्रसंस्करण करने की आवश्यकता है और कथन के भीतर से SCOPE_IDENTITY
प्राप्त करने के बारे में अनिश्चित हूं।IF कथन
मेरे दो तालिकाओं:
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
)
संग्रहित प्रक्रिया:
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
यह रिटर्न Incorrect syntax near the keyword 'ELSE'
क्या यह देखने को पूरा करने के लिए सबसे अच्छा तरीका होगा/डालने? बाद मैं आईडी प्राप्त करने मैं तो आप आप एक अंत शुरू
IF NOT EXISTS(SELECT ObjectID FROM ObjectTable WHERE ObjectName = @ObjectName)
BEGIN
INSERT INTO ObjectTable(ObjectName)VALUES(@ObjectName)
SET @ObjectID = SCOPE_IDENTITY()
END
ELSE
SELECT @ObjectID = ObjectID FROM ObjectTable WHERE ObjectName = @ObjectName