set @sqlstring='select b.prod_no,sum(inv_num) as inv_num into dlsyyxt_new..#temprec from ' + @mydbname +'.dbo.inv_sub b left join ' + @mydbname +'.dbo.inv_main a on b.list_no=a.list_no where a.inv_date between ''' + @begintime+ ''' and ''' +@endtime+ ''' group by b.prod_no '
      exec(@sqlstring) 
        declare cur_inv cursor for select prod_no,inv_num from dlsyyxt_new..#temprec执行到第三句时出错
@RETURN_VALUE = N/A因为需要改动数据库,所以经常要用变量,不知道为什么#temprec 没创建,明明创建了

解决方案 »

  1.   

    exec(@sqlstring) 这个完成了,想法于一个批处理结束了,里面的临时表也就释放了
      

  2.   

    除非把上面的局部临时表dlsyyxt_new..#temprec 改为全局临时表dlsyyxt_new..##temprec,或者使用一个真实表代替,或者把下面要执行的语句也放到 @sqlstring中,一起执行
      

  3.   


    SET @sqlstring = 'SELECT b.prod_no, SUM(inv_num) AS inv_num INTO dlsyyxt_new..#temprec FROM ' + 
        @mydbname  + '.dbo.inv_sub b LEFT JOIN ' + @mydbname + '.dbo.inv_main a ' +
                     'ON b.list_no=a.list_no WHERE a.inv_date BETWEEN ''' + @begintime+ ''' AND ''' +@endtime+ ''' GROUP BY b.prod_no 'EXEC(@sqlstring)  
    DECLARE cur_inv CURSOR FOR SELECT prod_no, inv_num FROM dlsyyxt_new..#temprec是不是between那句的语法有问题?