ASs_type    varchar2(40);
s_start   date;
s_end     date;
BEGIN  ----
  SELECT MAX(ID*1) INTO s_type FROM S_IN_RECORD;
  ----
  SELECT TO_DATE(STARTTIME,'YYYY-MM-DD HH24:MI:SS') INTO s_start FROM S_IN_RECORD WHERE ID=s_type;
  
  --盘点结束,插入结束时间--
  UPDATE S_IN_RECORD SET ENDTIME=(SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') as A FROM dual) WHERE ID=s_type;
  ----
  SELECT TO_DATE(ENDTIME,'YYYY-MM-DD HH24:MI:SS') INTO s_end FROM S_IN_RECORD WHERE ID=s_type;  insert into S_IN_DETAIL(ID,KBH,STATE,TYPE)
 --盘亏--
SELECT (S_SQU_IN_DETAIL.NEXTVAL) AS ID,KBH,'4',s_type FROM
(SELECT KBH FROM S_IN_START A WHERE A.TYPE=s_type AND NOT EXISTS (SELECT KBH FROM S_IN_SCANSTOCK B WHERE A.KBH=B.KBH))
    ;  

 --以的代码只能从1插到9,10及10以后的数字插不进去是怎么回事?--
    

  




--删除扫描记录表数据--
   DELETE S_IN_SCANSTOCK;
END;

解决方案 »

  1.   

    是否是指这里?
    insert into S_IN_DETAIL(ID,KBH,STATE,TYPE) 
    --盘亏-- 
    SELECT (S_SQU_IN_DETAIL.NEXTVAL) AS ID,KBH,'4',s_type FROM 
    (SELECT KBH FROM S_IN_START A WHERE A.TYPE=s_type AND NOT EXISTS (SELECT KBH FROM S_IN_SCANSTOCK B WHERE A.KBH=B.KBH)) 你取个s_type值来测试
    执行下
    SELECT (S_SQU_IN_DETAIL.NEXTVAL) AS ID,KBH,'4',s_type FROM 
    (SELECT KBH FROM S_IN_START A WHERE A.TYPE=s_type AND NOT EXISTS (SELECT KBH FROM S_IN_SCANSTOCK B WHERE A.KBH=B.KBH)) 
    检查一下
      

  2.   

    检查下S_IN_DETAIL表中的ID字段长度,是否是1
    如果是的话把它改大点,以前实习的时候做一个期货系统也是这个问题。
    很好奇你现在做的是是不是我当年那个,呵呵
      

  3.   

    S_IN_DETAIL表中的TYPE类型是VARCHAR2 大小30
      

  4.   

    MAX(ID*1)是把ID转换为整型 我都看过长度了,应该不能是长度问题
      

  5.   


    问题已经解决了,是程序里的代码问题原来是:MAX(ID)  改成MAX(TO_NUMBER(ID)) 就解决了
    谢谢大家!