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

时间:2014-10-06 15:36:31

标签: 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

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

  

Msg 2714,Level 16,State 6,Procedure Test_Procedure,第15行
  已有一个名为' tempId'在数据库中。

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

我非常感谢您帮助解决上述问题。

1 个答案:

答案 0 :(得分:1)

尝试使用此语法设置变量。

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

目前您正在选择'正在创建一个表格< tempId'在数据库上。