CREATE PROCEDURE test
@myname varchar(10)
 AS
exec('select * from '+@myname)
GO

解决方案 »

  1.   

    create procedure test @myname char(10)
    as 
    declare @Temp char(100)
    set @temp='Select * from' + @mynameexec(@temp)
    go
      

  2.   

    不过,如果我是想直接在查询分析器里面exec哪个过程,不是在那里存储过程里面exec,我应该怎么做呢?
      

  3.   

    CREATE PROCEDURE test
    @myname varchar(1000)
     AS
    exec('select * from '+@myname)
    GO------------------
    exec test '你的表名'
      

  4.   

    如果SQL 语句中使用一个变量来代替对象名,这样的动态SQL 语句必须使用
    EXEC来执行。exec test '你的表名'  或exec test @myname = '你的表名'
      

  5.   

    大力哥,那我下面这个存储过程那个地方有错误啊?CREATE PROCEDURE Display_Data
    @ClassName char(10),@TempDB char(10)
     AS
    declare @LClass varchar(20)
    declare MyCursor cursor  for select 小类名称 from ClassName
    fetch next from MyCursor into @LClass
    while (@@FETCH_STATUS=0)
    begin 
    select * into TempDB from LClass
    fetch next from MyCursor into @LClass
    end
    close MyCursor
    deallocate MyCursor
    select * from TempDB
    GO
      

  6.   

    1、select * into 你知道是做什么的吗?你的tempDB能被多次新建吗?
    2、你的lclass表和@lclass有什么关系?估计lclass是表名变量
    3、因为你写的错误太多,我不能明确你的目的是什么?
    --估计这是你想要的:
    CREATE PROCEDURE Display_Data
    @ClassName varchar(10),@TempDB varchar(10)
     AS
    declare @LClass varchar(20)
    exec('declare MyCursor cursor  for select 小类名称 from '+@ClassName)
    fetch next from MyCursor into @LClass
    while (@@FETCH_STATUS=0)
    begin 
    exec('insert '+@tempdb+' select * from '+@LClass)
    fetch next from MyCursor into @LClass
    end
    close MyCursor
    deallocate MyCursorexec('select * from '+@TempDB)
    GO
      

  7.   

    大力哥,你真好人我要实现的功能是这样的:在存储过程里传入上级表和临时表的名字,之后在存储过程里面通过上级表取出下级表的名字,并且把每个下级表的数据都存到临时表里面去,之后得到临时表的全部数据(也就是得到了全部下级表的数据)因为我手头没相成的SQL SERVER的书,刚才去图书馆找了一本书回来,让我看看你的代码先谢谢你,有空请你喝茶
      

  8.   

    其实我写了那么多错误,主要是对存储过程里面的变量不是太理解,不知道什么地方要加''和不需要加'',怎么你上面那里定义游标有要用exec,好象很多书上不是这样写的