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