gpt4 book ai didi

sql-server - 在 IF 语句内将变量设置为 SCOPE_IDENTITY

转载 作者:行者123 更新时间:2023-12-03 00:25:15 24 4
gpt4 key购买 nike

我正在尝试编写一个存储过程来检查记录是否存在,如果不存在,则执行插入操作,返回SCOPE_IDENTITY,如果存在,则仅返回记录的 ID目的。在过程中获得此信息后,我需要对其进行进一步处理,并且不确定如何从 IF...ELSE 语句中获取 SCOPE_IDENTITY

我的两个表:

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

这会返回关键字“ELSE”附近的语法不正确

完成此查找/插入的最佳方法是什么?获得 ID 后,我将执行以下操作

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

SELECT SCOPE_IDENTITY()

最佳答案

如果你有不止一件事要做,你需要一个 BEGIN END

IF NOT EXISTS(SELECT ObjectID FROM ObjectTable WHERE ObjectName = @ObjectName)
BEGIN
INSERT INTO ObjectTable(ObjectName)VALUES(@ObjectName)
SET @ObjectID = SCOPE_IDENTITY()
END
ELSE
BEGIN
SELECT @ObjectID = ObjectID FROM ObjectTable WHERE ObjectName = @ObjectName
END

关于sql-server - 在 IF 语句内将变量设置为 SCOPE_IDENTITY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com