plsql error判断后怎样将不需要插入表中的数据过滤掉,只插入需要的数据呢?

plsql error判断后怎样将不需要插入表中的数据过滤掉,只插入需要的数据呢?

不能判断一次插入一次,需要将全部的error check都完成后,最后统一插入表中 (防止同条数据多次插入),试着立了flag,但是效果不太对。
求告知,感谢!

CREATE OR REPLACE PACKAGE BODY xx_test01 AS

PROCEDURE main (
    id NUMBER
) IS
    i    VARCHAR2(255);
    flag NUMBER(1) := 0;
    
CURSOR one01 IS
    SELECT
        name,
        id,
        sex,
        addr,
        shigoto
    FROM xx_test_wk ;
BEGIN
    FOR i IN one01 LOOP
       -- 不插入xx_test表
        IF length(i.name) > 10 THEN  --怎样才能将不需要插入xx_test表的数据过滤掉呢
            flag := 1;
        END IF;
        -- 插入xx_test表
        IF i.id > 11111110 THEN
            NULL;
        END IF;
        -- 不插入xx_test表
        IF i.SEX > 0 THEN
           flag := 1;
        END IF ;
       
        IF flag = 1 THEN --这里用flag虽然能编译通过,但是一条数据都插入不了。
            NULL;
        ELSE
           INSERT INTO xx_test (
                name,
                id,
                sex,
                addr,
                shigoto) 
            VALUES (
                i.name,
                i.id,
                i.sex,
                i.addr,
                i.shigoto
            );
        END IF;

    END LOOP;
END;

END xx_test01;

每次循环执行的第一行代码,应该是对flag的值进行初始化处理,否则如果第一行数据导致flag变成1了,它以后就一直是1了,永远都走不到你的else里去


在这行代码下面加一行

FOR i IN one01 LOOP
flag:=0;