【发布时间】:2014-03-14 09:17:55
【问题描述】:
我正在更新 temp_docmeta 表中的 xprojecttype 并尝试通过包含 "d.xproject_id NOT IN" 子句来忽略以下查询中的所有无效数字,但它仍然向我抛出 01722. 00000 - "invalid number" 错误。
BEGIN
FOR X IN
(SELECT projecttype,pid,enddate FROM temp_project
)
LOOP
UPDATE temp_docmeta d
SET d.xprojecttype =X.projecttype
WHERE d.xproject_id =X.PID
AND X.projecttype IS NOT NULL
AND X.enddate > '10-MAR-14 00.00.00'
AND d.xproject_id NOT IN
(SELECT TO_NUMBER(xproject_id)
FROM temp_docmeta
WHERE REGEXP_LIKE(xproject_id, '[^0-9]+')
);
END LOOP;
END ;
但是,当我使用 delete 语句删除同一组记录,然后运行上述更新命令时,它可以正常工作。
DELETE
FROM temp_docmeta
WHERE xproject_id IN
(SELECT xproject_id
FROM temp_docmeta
WHERE REGEXP_LIKE(xproject_id, '[^0-9]+')
);
我不想从我的 temp_docmeta 表中删除上述记录,但需要像第一个查询一样更新 temp_docmeta 表。我该怎么做?
【问题讨论】: