存储过程sql server 2008中的动态sql

存储过程sql server 2008中的动态sql,sql,sql-server,Sql,Sql Server,下面是我试图执行时抛出的错误 Msg 208,16级,状态0,过程调用视图,第11行 无效的对象名称“表” 当我执行它的时候 exec [dbo].[CallView] 这是一个错误 无效的对象名称“表”** 请有人提出这里出了什么问题以及我们如何纠正它。 谢谢在使用临时表之前,您需要先创建临时表 在插入之前添加如下内容 试着这样, CREATE PROCEDURE [dbo].[CallView] AS SET NOCOUNT ON; DECLARE @name AS VARCHAR(ma

下面是我试图执行时抛出的错误

Msg 208,16级,状态0,过程调用视图,第11行 无效的对象名称“表”

当我执行它的时候

exec [dbo].[CallView]
这是一个错误

无效的对象名称“表”**

请有人提出这里出了什么问题以及我们如何纠正它。
谢谢

在使用临时表之前,您需要先创建临时表

在插入之前添加如下内容

试着这样,

CREATE PROCEDURE [dbo].[CallView]
AS
SET NOCOUNT ON;

DECLARE @name AS VARCHAR(max)

CREATE TABLE #table (
    customerID INT Identity(1, 1)
    ,PRODUCT VARCHAR(100)
    ,PRODUCT_PRICE DECIMAL(18, 2)
    )

SELECT @name = VIEW_NAME
FROM ZBT_MAPPING_TABLE MT
INNER JOIN OUTPUT_DL DL ON MT.COMPID = DL.COMPID

-- insert to temp table
INSERT INTO #table (
    customerID
    ,PRODUCT
    ,PRODUCT_PRICE
    )
EXEC (N'select * from ' + @name)

select *from  #table

drop table  #table

您可以在不创建临时表的情况下执行此操作

select * 
into #table
from MyTable
但不是

INSERT INTO #table
(
  customerID,
  PRODUCT,
  PRODUCT_PRICE
)

创建临时表是missing@sagi:我正试图将数据推送到临时表中。@StackUser:Thanks实际上语法是:无论如何,从MyTable中选择*进入表中,如果表已经可用,请插入。。。执行官应该工作。@Lucbert你是对的,对不起。我的意思是选择。。。无需创建即可插入tmp,但无需插入
select * 
into #table
from MyTable
INSERT INTO #table
(
  customerID,
  PRODUCT,
  PRODUCT_PRICE
)