create proc mypro
@id int
asdeclare @name varchar(100)
declare @TableName varchar(100)
declare @SQLstr varchar(150)set @TableName='Table'+rtrim(ltrim(str(@id)))
select @SQLstr="select"+@name+"=name from "+@TableName+"where flag=0"
exec sp_sqlexec @SQLstr
go

解决方案 »

  1.   

    to : firebing(初学者) 
    这样是可以执行,可@name变量没有得到结果呀
      

  2.   

    create proc mypro
    @id int
    asdeclare @name varchar(100)
    declare @TableName varchar(100)set @TableName='Table'+rtrim(ltrim(str(@id)))
    select name  as @name from @TableName where flag=0
    go
      

  3.   

    zthhwh(大海)
    照你说的也不行,
    它告诉我@TableName对象名不合法,各位老大,帮帮忙了
      

  4.   

    create proc mypro
    @id int
    asdeclare @name varchar(100)
    declare @TableName varchar(100)
    declare @SQLstr nvarchar(150) ---nvarcharset @TableName='Table'+rtrim(ltrim(str(@id)))
    select @SQLstr="set @name='' select @name=@name+name from '+@TableName+'where flag=0'
    exec sp_executesql @SQLstr,N'@name1 varchar(100) output',@name  output
    select @name
    go
      

  5.   

    上面错了一句
    select @SQLstr="set @name1='' select @name1=@name1+name from '+@TableName+'where flag=0'
      

  6.   

    用条件判断后分别执行两个SQL,我觉得如果仅仅是两个表的话,没必要拼SQL语句。