declare @indextable table(id int identity(1,1),nid int) 声明一个临时表declare @strinsert varchar(4000)set @strinsert="select NewsID  from NewsTable    where   "+@strWhere +"order by  NewsID desc"insert into @indextable(nid) select NewsID  from NewsTable  + 我想把由 @strinsert产生的结果插入  @indextable 中,应该怎么写呢

解决方案 »

  1.   

    insert into @indextable(nid) exec(@strinsert)
      

  2.   

    或者:
    insert into @indextable(nid) 
    exec('select NewsID  from NewsTable   where '+@strWhere+' order by  NewsID desc')
      

  3.   

    -- 示例
    declare @t table(id int)
    insert @t exec('select id from sysobjects')
      

  4.   

    insert into @indextable(nid) 
    exec('select NewsID  from NewsTable ' + @sqlWhere)
      

  5.   

    以上方法在检查语法的时候,均报同样的错:错误 197: 无法在向表插入变量时将 execute 用作源
      

  6.   

    把表变量的定义一起写到这个动态语句里。我见过使用动态语句往表变量插数据的。我相信是绝对可以的。sql server和asp一样,语法不好,有点不守常规。你可以在任何一个数据库测试下
    我把你的脚本稍微改了一下。-- 声明一个临时表
    declare @strWhere varchar(16)
    set @strWhere = ' 1= 1 '
    declare @strinsert varchar(4000)set @strinsert='declare @indextable table(id int identity(1,1),nid int) insert into @indextable(nid)  select top 10 id  from sysobjects    where   '+@strWhere +'order by  id desc
    select * from @indextable'execute ( @strinsert )
      

  7.   

    最近在忙一些非技术的事,网站访问量急剧下降,真的很不好意思。
    也没什么时候来论坛,刚才写这个脚本的时间都是牺牲的睡眠时间啊。
    请多多访问 http://chinadba.cn 帮我维持到一天有几个人访问吧。
    多谢了。
    --------------------------
    http://chinadba.cn
    深圳骄子数据库服务网
    最具实战经验的数据库优化、管理、设计、培训。