在游标循环的时候 如果日期类型为空 就报ORA-01840错误 怎么解决

解决方案 »

  1.   

    实测数据:CREATE TABLE T142
    (
        ID NUMBER(4),
        Des VARCHAR2(20)
    );
    INSERT INTO T142 VALUES(1, 'A');
    INSERT INTO T142 VALUES(2, NULL);
    INSERT INTO T142 VALUES(3, 'C');
    COMMIT;
    存储过程:CREATE OR REPLACE PROCEDURE ProcTestNull 
    IS
        vDes VARCHAR2(20);
        CURSOR cur IS SELECT * FROM T142;
    BEGIN
        FOR r IN cur LOOP
            -- 判断Des字段为NULL
            IF r.des IS NULL THEN
                DBMS_OUTPUT.PUT_LINE(r.id || ', ' || 'Des字段为NULL');
                continue;            
            END IF;
            DBMS_OUTPUT.PUT_LINE(r.id || ', ' || r.des);
        END LOOP;
    END ProcTestNull;
    输出结果: