在Oracle Trigger中创建动态SQL查询

时间:2011-05-26 20:38:23

标签: sql oracle triggers dynamic-sql

我正在尝试在Oracle 9i中编写一个触发器,它将根据触发触发器的NEWROW的值创建一些动态插入语句。

我需要将新行的两个字段的值传递给返回值表的现有函数(此函数已存在且工作正常)。基本上该函数将字符串拆分为表行。例如,如果我传递的两个值是'Shirt,Sweater'和'Red,Blue',我会返回两个表。第一个表的值为:

Shirt
Sweater

,第二个表的值为

Red
Blue

非常简单。返回这两个表后,我需要根据这两个表中的值创建一些动态插入语句,如下所示:

insert into mytable values ('Shirt','Red')
insert into mytable values ('Shirt','Blue')
insert into mytable values ('Sweater','Red')
insert into mytable values ('Sweater','Blue')

我没有必要使用现有的功能。如果字符串可以拆分为具有此触发器的数组,并且具有相同的最终结果,也可以正常工作。

任何帮助都将非常感激。感谢。

1 个答案:

答案 0 :(得分:3)

你想要所有可能的数组元素组合,换句话说?

FOR i in 1 .. clothing.count LOOP
    FOR j in 1 .. colors.count LOOP
        INSERT INTO mytable VALUES ( clothing(i), colors(j) );
    END LOOP;
END LOOP;