代码之家  ›  专栏  ›  技术社区  ›  Sukhjeevan

创建存储过程时出现问题

  •  2
  • Sukhjeevan  · 技术社区  · 14 年前

    我正在创建一个存储过程,但它抛出了一个错误。 有人能告诉我我做错了什么吗。

    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 回复  |  直到 14 年前
        1
  •  7
  •   Damien_The_Unbeliever    14 年前

    有时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
    
        2
  •  1
  •   Klaus Byskov Pedersen    14 年前

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

    CREATE PROCEDURE QOTD (@source INT) 
    AS  
    BEGIN 
     IF @source = 1
        SELECT ID FROM tbl1  
     ELSE 
        SELECT ID  FROM tbl2  
    END 
    
        3
  •  -2
  •   pavanred    14 年前

    数据库中已经存在一个临时表{tMPID。在手术前试着用这个。

    Drop table #tmpID