首页 文章

无效的对象名称## Temp创建全局临时表时出错

提问于
浏览
2

我有几个表中的数据,我想加载到SQL Server中的临时表 .

我正在创建一个从表中获取数据的存储过程 . 然后我创建全局临时表并将存储过程的结果插入其中 .

但是,当尝试从临时表中选择数据时,我收到此错误“无效的对象名称## Temp”

如果它是全局临时表,为什么会出现此错误?

DROP PROCEDURE usp_GetEmp
GO
CREATE PROCEDURE usp_GetEmp
AS
BEGIN
    SELECT table1.id AS Id
      , table2.data AS table2_value
  FROM table1 INNER JOIN table2
  ON table1.id = table2.table1_id
  WHERE table2.data = 1
END

  CREATE TABLE ##Temp
  ( Id Int
  , Value varchar(50))

  INSERT INTO ##Temp
  EXEC usp_GetEmp
  GO

  SELECT *
  FROM ##Temp

1 回答

  • 2

    试试吧

    DROP PROCEDURE USP_GETEMP
    GO
    CREATE PROCEDURE USP_GETEMP
    AS
    BEGIN
    SELECT 
        TABLE1.ID AS ID
        ,TABLE2.DATA AS TABLE2_VALUE
    FROM TABLE1 INNER JOIN TABLE2
    ON TABLE1.ID = TABLE2.TABLE1_ID
    WHERE TABLE2.DATA = 1
    END
    GO
    
    IF OBJECT_ID('TEMPDB.DBO.##TEMP') IS NOT NULL
    DROP TABLE ##TEMP
    GO
    CREATE TABLE ##TEMP
    ( ID INT
    , VALUE VARCHAR(50))
    
    INSERT INTO ##TEMP
    EXEC USP_GETEMP
    GO
    
    SELECT *
    FROM ##TEMP
    

相关问题