不能判断一次插入一次,需要将全部的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;