create proc sel @a varchar(10),@tab varchar(10)
as
exec('select * from '+@tab+' where name='''+@a+'''')
go
exec sel 'aa','bb'

解决方案 »

  1.   

    if exists(select name from sysobjects where name='tblA' and xtype='U')
       drop table tblA
    go
    create table tblA
    (
      ID int,
      name varchar(10)
    )
    go
    insert into tblA values(1, 'Michel')
    insert into tblA values(2, 'Leo')
    insert into tblA values(3, 'Helo')if exists(select name from sysobjects where name='sel' and xtype='FN')
       drop function sel
    goif exists(select name from sysobjects where name='sel' and xtype='FN')
       drop function sel
    gocreate function sel( @n varchar(10),@tab varchar(10))
    returns varchar(80)
    as
    begin
      declare @sql Nvarchar(80)
      --declare @c int
      
      set @sql = 'select @c=ID from '+ @tab +' where name='''+ @n +''''
      --exec sp_executesql @sql, N'@c int output', @c output
      return @sql
    end
    go
    select dbo.sel('Leo','tblA')
      

  2.   

    HawaiiLeo(罗马数字) 运行你的代码,得到的结果是:
    select @c=ID from tblA where name='Leo'并没有得到
    2,Leo
    这个结果
      

  3.   

    我上面都写了,function不能用exec的,你可以试试
      

  4.   

    create function sel(@a char(10),@tab varchar(10))
    return table
    as
    return (select * from xx where name=@a and uu=@tab) 
    goselect * from sel('s','b')