use ccs--删除临时表
if object_id('TMP_OPNG')is not null  drop table TMP_OPNG
if object_id('TMP_OPNG2')is not null  drop table TMP_OPNG2
--创建
create table TMP_OPNG
(
LOT_TIME datetime,
LOT_DAY datetime,
SHIFT varchar(3),
PRODUCT varchar(20),
STEP varchar(16),
LOTID varchar(10),
EQPID varchar(128),
OPERID varchar(64),
FT_OPID varchar(64),
VI_OPID varchar(64),
RESULT varchar(16),
CODE varchar(128),
PART varchar(5)
)
--导
EXEC master..xp_cmdshell 'bcp ccs..TMP_OPNG in \\109.120.2.30\ftng\QCHISTORY.xls -c ' 
--剔除不需要的
delete from TMP_OPNG where RESULT<>'NG' or code='MNDI'
--临时转存
select * into TMP_OPNG2 from DEFECT_LIST where 1=0
insert into TMP_OPNG2 ([TIME],[DATE],SHIFT,CLASS,PRODUCT,LOTID,QA_OPID,FT_VI_EQP,FT_VI_OPID,FT_VI_OPNAME,
            DEFECTNAME,SORT,STEP,DEPT,MISS_REASON,OP_ANALYSIS,LG_ID,LG_NAME,LG_SIGN,PROCESSING,STATUS)
   select LOT_TIME,LOT_DAY,SHIFT,'',PRODUCT,LOTID,OPERID,ft_opid,vi_opid,'',CODE,'','',PART,'','','','','','不良发生','进行中' from TMP_OPNG
--数据整理
delete a from TMP_OPNG2 a,DEFECT_LIST b where a.[time]=b.[time] and a.[lotid]=b.[lotid]
update a set a.DEFECTNAME=b.[description],a.sort=b.sort from TMP_OPNG2 a,odms..code_description b where a.DEFECTNAME=b.code
update TMP_OPNG2 set STEP='F/T',FT_VI_EQP=left(FT_VI_EQP,len(FT_VI_EQP)-9),FT_VI_OPID=right(FT_VI_EQP,8) where sort not like '%APP%'
update TMP_OPNG2 set STEP='V/I',FT_VI_EQP=left(FT_VI_OPID,len(FT_VI_OPID)-9),FT_VI_OPID=right(FT_VI_OPID,8) where sort like '%APP%'
update a set a.FT_VI_OPNAME=b.opname,a.CLASS=b.CLASS from TMP_OPNG2 a,odms..op b where a.ft_vi_opid=b.opid
--插入到真正管理的表里面
insert into DEFECT_LIST ([TIME],[DATE],SHIFT,CLASS,PRODUCT,LOTID,QA_OPID,FT_VI_EQP,FT_VI_OPID,FT_VI_OPNAME,
            DEFECTNAME,SORT,STEP,DEPT,MISS_REASON,OP_ANALYSIS,LG_ID,LG_NAME,LG_SIGN,PROCESSING,STATUS)
   select [TIME],[DATE],SHIFT,CLASS,PRODUCT,LOTID,QA_OPID,FT_VI_EQP,FT_VI_OPID,FT_VI_OPNAME,
          DEFECTNAME,SORT,STEP,DEPT,MISS_REASON,OP_ANALYSIS,LG_ID,LG_NAME,LG_SIGN,PROCESSING,STATUS from TMP_OPNG2
--删除临时表
if object_id('TMP_OPNG')is not null  drop table TMP_OPNG
if object_id('TMP_OPNG2')is not null  drop table TMP_OPNG2以上代码在查询分析器中运行正常,我放到作业里向定期执行,结果运行错误
不知道什么原因,由于在查询分析器中正常,所以都无法查错了,
请高手指点

解决方案 »

  1.   

    怎么看报错类型啊?
    SQL作业运行失败后,直接显示红色的标记,没有其它提示阿
      

  2.   

    执行用户: NT AUTHORITY\SYSTEM。第 30 行: 'SHIFT' 附近有语法错误。 [SQLSTATE 42000](错误 170)  第 40 行: 'SHIFT' 附近有语法错误。 [SQLSTATE 42000](错误 170).  步骤失败。
      

  3.   

    insert into TMP_OPNG2 ([TIME],[DATE],SHIFT,CLASS,PRODUCT,LOTID,QA_OPID,FT_VI_EQP,FT_VI_OPID,FT_VI_OPNAME,
                DEFECTNAME,SORT,STEP,DEPT,MISS_REASON,OP_ANALYSIS,LG_ID,LG_NAME,LG_SIGN,PROCESSING,STATUS)
       select LOT_TIME,LOT_DAY,SHIFT,'',PRODUCT,LOTID,OPERID,ft_opid,vi_opid,'',CODE,'','',PART,'','','','','','不良发生','进行中' from TMP_OPNG是30行所在,语法分析明明是对的啊