我已經創建了一個存儲過程,該存儲過程根據一個條件返回表中最後插入的行的ID。數據庫中已經存在一個對象SQL Server
條件是這樣的,如果被插入的行已經存在,那麼它將採用該行的標識列,否則它向該表中插入一個新行。
要做到這一點,我已經在存儲過程中
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,Line 15
數據庫中已經有一個名爲'tempId'的對象。
我不理解的位是tempId
被用作變量而不是表格。我看到有類似問題的人,但在他們的情況下,他們使用臨時表
我真的很感謝你幫助解決上述問題。
這是因爲第一次運行它時,表tempId不存在。但下一次運行它時,該表已經創建完畢。 – 2014-10-06 15:38:10