繁体   English   中英

数据库SQL Server中已经存在一个对象

[英]There already exists an object in the database SQL Server

我创建了一个存储过程,该存储过程根据一个条件返回表的最后插入行的ID。

这样的条件是,如果要插入的行已经存在,则它将占据该行的标识列,否则将向表中插入新行。

为此,我在存储过程中编写了以下代码

ALTER PROCEDURE [dbo].[Test_Procedure] 
    @description nvarchar(max) 
AS
BEGIN
    DECLARE @tempId int;

    SELECT CommentId 
    INTO tempId 
    FROM TestTable 
    WHERE description = @description;

    IF @tempId IS NULL
    BEGIN
        INSERT INTO TestTable 
        VALUES (@description);

        SELECT scope_identity();
    END
    ELSE 
    BEGIN
        SELECT @tempId FROM dual;
    END

    DROP TABLE tempId;
END

当我运行上面的存储过程时,第一次运行成功,然后在病房开始抛出以下错误消息

消息2714,级别16,状态6,过程Test_Procedure,第15行
数据库中已经有一个名为“ tempId”的对象。

我不明白的一点是tempId用作变量而不是表。 我见过有类似问题的人,但在他们的情况下,他们使用了临时表

非常感谢您为解决上述问题所提供的帮助。

尝试使用以下语法来设置变量。

SELECT @tempId  = CommentId from TestTable where description = @description;

当前,您的“选择进入”正在数据库上创建表“ tempId”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM