declare @a varchar(30)
set @a='master'
select @a
select db_id(@a)
select db_name(db_id(@a))
select * from @a..sysobjects--不行
select * from db_name(db_id(@a)).dbo.sysobjects--不行select * from @a..sysobjects
请问:上面的语句怎么实现?

解决方案 »

  1.   

    eclare @a varchar(30)
    set @a='master'
    select @a
    --select db_id(@a)
    --select db_name(db_id(@a))
    exec ('select * from '+@a+'.dbo.sysobjects')
      

  2.   

    declare @a sysname
    set @a='master'
    exec ('select * from '+@a+'.dbo.sysobjects')
      

  3.   

    使用动态SQL语句:
    declare @a varchar(30)
    set @a='master'
    select @a
    select db_id(@a)
    select db_name(db_id(@a))
    exec('select * from '+@a+'..sysobjects')
    最后一句写得有点多余了
      

  4.   

    动态SQLdeclare @a varchar(30) 
    set @a='master' 
    select @a 
    select db_id(@a) 
    select db_name(db_id(@a)) 
    exec('select * from '+@a+'..sysobjects')
      

  5.   


    declare @a sysname
    set @a='master'
    exec ('select * from '+@a+'.dbo.sysobjects')