试试
set @sqltext = 'insert into @tt([ID]) select a.[ID] from [tblname1] as a inner join [tblname2] as b on b.[tid] = a.[ID]'

解决方案 »

  1.   

    to fancyf
    这个方法在创建存储过程时不会有错,但执行时会提示"必须声明变量@tt"另外,我上面声明的@tt和@sqltext中的@t应为一致,写错了的。
      

  2.   

    将declare声明表变量一句放入@sqltext中
      

  3.   

    CREATE PROCEDURE [dbo].[pr_Sel]
    @keywd varchar(100), --关键词
    @flag varchar(200) --标识,如:1,2,3,6,7
    As

    Declare @sqltext varchar(5000)
    if @keywd <> '' select @keywd = '%' + @keywd + '%'
    set @sqltext = 'Declare   @t  table  ([N] int identity(1,1) not null,[ID] int)insert into @t select a.[ID] from [tblname1] as a inner join [tblname2] as b on b.[tid] = a.[ID]'
    +' where ('''+@keywd+''' = '''' or (b.[tname] like '''+@keywd+''' or b.[pname] like '''+@keywd+'''))'
    +'  and (a.[flag] in('+@flag+'))'
    +' order by a.[ID] desc'
    exec(@sqltext)
    select @@rowcount