我在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这样做。
答案 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