![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Для 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 наверняка в оракле есть. Но все равно, помоему, ужас.
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 наверняка в оракле есть. Но все равно, помоему, ужас.