|
|
|
INSERT из коллекции. Надо как-то схитрить
|
|||
|---|---|---|---|
|
#18+
Вот так делать нельзя, оракл ругается: Код: plsql 1. 2. 3. 4. 5. 6. Код: plsql 1. А очень хочется вставлять в таблицу числа от 1 до N. Не приходит в голову ничего лучше, чем создать сиквенс и его каждый раз перед употреблением (или после) сбрасывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2016, 00:04 |
|
||
|
INSERT из коллекции. Надо как-то схитрить
|
|||
|---|---|---|---|
|
#18+
Никанор Кузьмич, Причина ограничения в том, что forall делает множественное связывание (binding) и разовое выполнение (execution). Во время связывания SQL движок ничего не знает про PL/SQL индекс массива. Можно в цикле for loop заполнить вспомогательную коллекцию, а в forall сделать вставку. А можно извратиться через пакетную функцию инкремента и глобальную переменную. Но это будет хуже - на каждую строку вызов PL/SQL функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2016, 01:28 |
|
||
|
INSERT из коллекции. Надо как-то схитрить
|
|||
|---|---|---|---|
|
#18+
Никанор Кузьмич, insert into table select * from table(col). с дефолт sequence значениями должно работать на 12с. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2016, 02:28 |
|
||
|
INSERT из коллекции. Надо как-то схитрить
|
|||
|---|---|---|---|
|
#18+
Никанор Кузьмич, замени цикл на инсерт-селект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2016, 09:17 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1886940]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
139ms |
get topic data: |
5ms |
get first new msg: |
3ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 412ms |

| 0 / 0 |
