0

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

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

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

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

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

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

4

1 回答 1

0

这里没什么特别的,只是一个 catesian 连接(即无条件连接)

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
于 2011-11-14T03:00:35.440 回答