创建存储过程时出现问题

时间:2010-11-18 11:57:41

标签: sql-server tsql stored-procedures

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

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'。

3 个答案:

答案 0 :(得分:7)

有时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

答案 1 :(得分:1)

您不需要使用临时表。这应该足够了:

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

答案 2 :(得分:-2)

数据库中已存在临时表#tmpID。在手术前尝试使用它。

Drop table #tmpID