[personal profile] chabapok
Для 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 наверняка в оракле есть. Но все равно, помоему, ужас.

Date: 2013-10-25 10:37 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
а почему в примере с майскл нет дуала?

Date: 2013-10-25 11:48 pm (UTC)
From: [identity profile] chabapok.livejournal.com
В mysql этот дуал не нужен. Возможно, для совместимости только

например,

select 1,2,3;

в муслкуле нормально отдает строку с термя колонками. Из документации: "DUAL is purely for the convenience of people who require that all SELECT statements should have FROM and possibly other clauses. MySQL may ignore the clauses. MySQL does not require FROM DUAL if no tables are referenced."

То есть так:

select 1,2,3 from dual;

тоже можно. При этом оракл понимает только последний вариант. Насколько успел понять, вцелом, в оракле гораздо более "размашистый" синтаксис. После mysql это все кажется неоправдано усложненным.

March 2026

S M T W T F S
1234567
89 10 1112 1314
15161718192021
22232425262728
293031    

Style Credit

Expand Cut Tags

No cut tags