多个插入,带有可变数量的参数SQL

时间:2011-11-14 02:52:29

标签: oracle insert unpivot

我在Oracle 11g上有一个表t_test,有两个字段:

CITY  NAME
----- --------------
MIAMI JOHN
MIAMI ERNEST
MIAMI ERICK
TAMPA DAN

我想只使用一个insert命令在该查询上插入多行,并将NAME的值作为参数传递给查询。它会是这样的:

INSERT INTO T_TEST (CITY, NAME)
SELECT :1,(:2,:3,:4,:5) from dual

其中参数1为迈阿密,参数2,3,4和5为不同的名称。

我一直在看一些例子,我认为最好的选择是一个univot,所以我会有一个子查询,将名称作为行中的行返回,但我不知道如何使用unpivot这样做。

1 个答案:

答案 0 :(得分:0)

这里没什么好看的,只是笛卡尔式的加入(a。无条件加入)

INSERT INTO T_TEST (CITY,NAME)
SELECT C.city
    ,  N.name
FROM   ( SELECT :1 AS city FROM DUAL ) C
    ,  ( SELECT DECODE( LEVEL, 1, :1
                             , 2, :2
                             , 3, :3
                             , 4, :4
                             , 5, :5 ) AS name
         FROM DUAL
         CONNECT BY LEVEL <= 5 ) N