2013-10-25

2013-10-25 11:57 pm

А вы знаете как клятi москалi(tm) делают групповые инсерты?

Для mysql мы делаем так:

INSERT INTO mytable (col1, col2, col3) VALUES (1,2,3), (4,5,6), (7,8,9);

Но ведь это не true база данных. Настоящие программисты используют только oracle, только хардкор! Давайте посмотрим как это же будет выглядеть на ней.

Для oracle database этот запрос будет выглядеть так:

INSERT ALL INTO mytable (col1, col2, col3) VALUES (1,2,3) INTO mytable (col1, col2, col3) VALUES (4,5,6) INTO mytable (col1, col2, col3) VALUES (7,8,9) SELECT * FROM DUAL;

Западло каждый раз перечислять поля? на стак_оверфлов предлагается такой костыль:

INSERT INTO mytable (col1, col2, col3) select 1,2,3 from dual union all select 4,5,6 from dual union all select 7,8,9 from dual;

Или хранимая процедура+ее многократный вызов.

Да, я понимаю, руками подобное никто не пишет, для сгенеренного скрипта не особо важно, да и аналоги load data infile наверняка в оракле есть. Но все равно, помоему, ужас.