听起来你想要一个INSERT ALL
声明。就像是
INSERT ALL
WHEN (<<some condition>>) THEN
INTO table1( <<list of columns>> )
VALUES( <<list of columns>> )
WHEN (<<another condition>>) THEN
INTO table2( <<list of columns>> )
VALUES( <<list of columns>> )
WHEN (<<third condition>>) THEN
INTO table3( <<list of columns>> )
VALUES( <<list of columns>> )
SELECT <<list of columns>>
FROM <<source tables>>
WHERE <<some predicates>>
最后的SELECT
语句通常是您用来填充游标的任何查询。这些条件将实现您在循环内实现的任何逻辑,以确定将数据插入到哪个表中。
如果您知道游标中的行将始终插入到单个表中,则可以使用 anINSERT FIRST
而不是 an INSERT ALL
(其余语法保持不变),以便 Oracle 可以在第一个条件评估为 TRUE 时停止评估条件。