我正在创建一个存储过程,但是会引发错误。
有人可以告诉我我做错了什么吗?

CREATE TABLE tbl1 (ID int)
INSERT INTO tbl1 SELECT 1
CREATE TABLE tbl2 (ID int)
INSERT INTO tbl2 SELECT 2

CREATE PROCEDURE QOTD (@source INT)
AS
BEGIN
 IF @source = 1
 SELECT ID INTO #tmpID FROM tbl1
 ELSE
 SELECT ID INTO #tmpID FROM tbl2

 SELECT ID FROM #tmpID
END



错误:已经有一个名为
数据库中的“ #tmpID”。

最佳答案

有时,T-SQL编译器会感到困惑,并且没有意识到仅遵循IF的一侧。

CREATE PROCEDURE QOTD (@source INT)
AS
BEGIN
 CREATE TABLE #tmpID(ID int)
 IF @source = 1
 INSERT INTO #tmpID SELECT ID FROM tbl1
 ELSE
 INSERT INTO #tmpID SELECT ID  FROM tbl2

 SELECT ID FROM #tmpID
END

10-07 19:14
查看更多