IF TO_NUMBER(SUBSTR(FILENAME,19,1))=0 THEN
 ......
END IF
存储过程中用了这句就出错,去掉就好了,各路高手帮忙看看是怎么回事啊

解决方案 »

  1.   

    那就是FILENAME这个列有的不够20位
    导致取不到报错
      

  2.   

     有可能FILENAME还不到19位,呵呵
      

  3.   

    '08041012233001030010020852浙B12495.jpg'
    早就够了提示以下错误
    BEGIN pic_insert('08041012233001030010020852浙B12495.jpg'); END;      *
    ERROR 位于第 1 行:
    ORA-06550: 第 1 行, 第 7 列:
    PLS-00905: 对象 LICHENG.PIC_INSERT 无效
    ORA-06550: 第 1 行, 第 7 列:
    PL/SQL: Statement ignored
      

  4.   

    IF SUBSTR(FILENAME,19,1)='0' THEN 
    ...... 
    END IF 你可以试试这样写,可以吧
      

  5.   

    简单一点的
    CREATE OR REPLACE PROCEDURE "PIC_INSERT"
                    (PID VARCHAR2,FILENAME VARCHAR2) IS
    F_LOB BFILE;
    B_LOB BLOB;
    BEGIN
    IF TO_NUMBER(PID)=0 then
     INSERT INTO BJXX(SJBH)
     VALUES (SJBH.nextval);
    END IF
    COMMIT;
    END; 这样也出错
    BEGIN pic_insert('0','08041012233001030010020852浙B12495.jpg'); END;      *
    ERROR 位于第 1 行:
    ORA-06550: 第 1 行, 第 7 列:
    PLS-00905: 对象 LICHENG.PIC_INSERT 无效
    ORA-06550: 第 1 行, 第 7 列:
    PL/SQL: Statement ignored
    去掉IF语句就没错了
      

  6.   


    CREATE OR REPLACE PROCEDURE "PIC_INSERT" 
                    (PID VARCHAR2,FILENAME VARCHAR2) IS 
    F_LOB BFILE; 
    B_LOB BLOB; 
    BEGIN 
    IF TO_NUMBER(PID)=0 then 
    INSERT INTO BJXX(SJBH) 
    VALUES (SJBH.nextval); 
    END IF --这里少了分号;
    COMMIT; 
    END; 
      

  7.   

    位数肯定够的话,就用substr(name,19,1)
    那个if报错,是后面少了一个;