直接写上去就是了。
如果不行就先把查询语句转化成SQL字符串
然后再用Execute执行

解决方案 »

  1.   

    --用动态SQL
    exec('select * from '+@表名+')
      

  2.   

    CREATE PROCEDURE dtt_GetUserInfo @userid  int,@index int
    as 
    declare @tablename varchar(100),@i varchar(300)
    select @tablename ='userinfo'+CASE(index as varchar(1))
    declare @usermoney int
    select @i='select '+@usermoney+'=usermoney from '+@tablename+' where userid='+@userid
    execute(@i)
    go
      

  3.   

    CREATE PROCEDURE dtt_GetUserInfo @userid  int,@index int
    as 
    declare tablename varchar(100)
    select tablename ='userinfo'+CASE(index as varchar)
    declare @usermoney int
    declare @sql varchar(1000)
    set @sql = 'select '+@usermoney+ ' = usermoney from '+@tablename+' where userid = '+cast(@userid as varchar)
    exec(@sql)go
      

  4.   

    以上都不行,主要要提取 @usermoney 值,还有没有高手啊
      

  5.   

    --类似这样用
    declare @sql nvarchar(200)
    declare @cnt int 
    set @sql=N'select @cnt=count(*) from WQ_STINFO_B '
    exec sp_executesql @sql,N'@cnt int output',@cnt output
      

  6.   

    /*
    create table userinfo2(
    userid int ,
    usermoney int)insert into userinfo2
    values(1,233)dtt_GetUserInfo 1,2*/
    create procedure dtt_GetUserInfo @userid  int,@index int
    as
    begin
        declare @tablename varchar(100)
        select @tablename ='userinfo'+cast(@index as varchar)

        declare @sql varchar(1000)
        set @sql = 'declare @usermoney int select @usermoney=usermoney         
            from '+@tablename+' where userid = '+cast(@userid as varchar)+' select @usermoney'
        exec(@sql)
    end
      

  7.   

    zlp321002 的方法简单有效, 呵呵 刚好我也想问这个问题, 谢谢