我创建了一个存储过程,它根据一个条件返回表的最后一行插入的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
用作变量而不是表。我见过有类似问题的人,但在他们的情况下,他们使用临时表
我非常感谢您帮助解决上述问题。
答案 0 :(得分:1)
尝试使用此语法设置变量。
SELECT @tempId = CommentId from TestTable where description = @description;
目前您正在选择'正在创建一个表格< tempId'在数据库上。