1:写成存储过程没有意义,只能返回一条查询语句,没办法返回多条。如果只查其中一条,可以这样:declare @tablename varchar(20)
select @tablename = a from A
exec('select * from '+@tablename)

解决方案 »

  1.   

    Declare @dav as varchar(50)   ---定义变量,用来保存从游标中取得的值Declare  cursor5 cursor for select a from A   ---定义游标
     
    open  cursor5   ---打开游标fetch  cursor5 into @pdav   while @@fetch_status=0  ---循环读取值
    begin
             exec('select * from '+@dav)  ---执行操作
             
           fetch cursor5 into @dav
    endclose  cursor5  ---关闭游标Deallocate Cursor5    ---删掉游标
      

  2.   

    declare  cursor_insert cursor for select a from A
    declare @i varchar(100)
    open cursor_insert
    fetch cursor_insert into @i
    while @@fetch_status=0
    begin
      exec('select * from '+@i)
      fetch cursor_insert into @i
    end
    close cursor_insert
    deallocate cursor_insert
      

  3.   

    create proc test
    as 
    set nocount on
    declare @str varchar(200)
    declare  cursor_hdy cursor for select a from A
    open cursor_hdy
    fetch next from cursor_hdy into @str
    while @@fetch_status=0
    begin
      exec('select * from '+@str)
      fetch next from cursor_hdy into @str
    end
    close cursor_hdy
    deallocate cursor_hdy
      

  4.   

    用游标就行了:
    create proc p_test
    as
    declare #aa cursor for select a from A
    declare @a varchar(1000)
    open #aa
    fetch next from #aa into @a
    while @@fetch_status=0
    begin
      exec('select * from '+@a)
      fetch next from #aa into @a
    end
    deallocate #aa
    go
      

  5.   

    declare  cursor_insert cursor for select a from A
    declare @i nvarchar(100)
    open cursor_insert
    fetch cursor_insert into @i
    while @@fetch_status=0
    begin
      exec('select * from '+@i)
      fetch cursor_insert into @i
    end
    close cursor_insert
    deallocate cursor_insert