Многократная вставка с переменным количеством параметров SQL - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть таблица t_test в Oracle 11g с двумя полями:

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 будут разными именами.

Я видел несколько примеров, и я подумал, что лучшим вариантом будет непивот, поэтому у меня будет подзапрос, который будет возвращать имена в виде строк в таблице, но я не знаю, как использовать непивот сделать это.

1 Ответ

0 голосов
/ 14 ноября 2011

Ничего особенного здесь, только 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
...