insert into xs_xjyd_temp (oc_xszb,oc_xxzb,oc_bjzb,dt_yd_start,dt_yd_end,oc_ydlx,dt_czrq,oc_czy,oc_yxbz) 
   select  oc_xszb,oc_mbxxzb,oc_mbbjzb,dt_ydrq,'9999-01-01',oc_ydlx,getdate(),'','T' from 
   (select  b.oc_xszb,b.oc_mbxxzb,b.oc_mbbjzb,dt_ydrq,oc_ydlx 
   from xs_xszb a,xs_xjyd b where a.c_id in (select oc_xszb  from xs_xjyd where oc_yxbz='T' group by oc_xszb 
   having count(oc_xszb)=1) and a.oc_yxbz='T' and b.oc_yxbz='T' and a.c_id = b.oc_xszb and b.oc_ydlx in ('00','01','03')  ) a上面是我的SQL语句,我在SQL查询分析器里可以执行。当我要生成储过程执行到该语句时,老提示:在关键字 'INSERT ' 附近有语法错
我的SQL语句确实又没问题。报这样的错,怎么解决。。期待中。 
  

解决方案 »

  1.   

    print 出来看看,就知道了
      

  2.   

    insert into xs_xjyd_temp 
    (oc_xszb,oc_xxzb,oc_bjzb,dt_yd_start,dt_yd_end,oc_ydlx,dt_czrq,oc_czy,oc_yxbz
    )  
      select oc_xszb,oc_mbxxzb,oc_mbbjzb,dt_ydrq,'9999-01-01',oc_ydlx,getdate(),'','T' from  
      (
      select b.oc_xszb,b.oc_mbxxzb,b.oc_mbbjzb,dt_ydrq,oc_ydlx  
      from xs_xszb a,xs_xjyd b where a.c_id in (select oc_xszb from xs_xjyd where oc_yxbz='T' group by oc_xszb  
      having count(oc_xszb)=1) and a.oc_yxbz='T' and b.oc_yxbz='T' and a.c_id = b.oc_xszb and b.oc_ydlx in ('00','01','03')
     ) a语法没有问题
      

  3.   

    估计你select 出来东西
    字段类型与插入的不匹配
      

  4.   


    贴存储过程,可能问题不在这里,在insert的上面。
      

  5.   

    在 insert前加个空格,试下。
      

  6.   

    也不行呀!我用exec的话就报在关键字 'exec' 附近有语法错误。
      

  7.   

    我估计楼主要前台语言中报错的,
    string str='create proc test as' +
    'insert ...'这样的话,在insert 前加空格看看。
      

  8.   

    如果说代码能在查询分析器中运行的话,那就是前台拼接sql错了。贴出来大家看看。
      

  9.   

    那个insert前有空格呀,我是在SQL查询分析器里写的存储过程,写完点击”执行查询“的时候就报错了。
      

  10.   

    我的意思是,sqlserver的存储过程在SQL查询分析器里写好后,点击”执行查询“才能在你相应的数据库的存储过程包下找到吗?我就是在点击"执行查询"时出的错
      

  11.   

    insert into xs_xjyd_temp 
    (oc_xszb,oc_xxzb,oc_bjzb,dt_yd_start,dt_yd_end,oc_ydlx,dt_czrq,oc_czy,oc_yxbz
    )  
      select oc_xszb,oc_mbxxzb,oc_mbbjzb,dt_ydrq,'9999-01-01',oc_ydlx,getdate(),'','T' from  
      (
      select b.oc_xszb,b.oc_mbxxzb,b.oc_mbbjzb,dt_ydrq,oc_ydlx  
      from xs_xszb a,xs_xjyd b where a.c_id in (select oc_xszb from xs_xjyd where oc_yxbz='T' group by oc_xszb  
      having count(oc_xszb)=1) and a.oc_yxbz='T' and b.oc_yxbz='T' and a.c_id = b.oc_xszb and b.oc_ydlx in ('00','01','03')
     ) a
    两个a重命名了.
    所以里面的a.引用无效.