не совсем до конца понимаю для чего так делают:
                  
                  
                  
                  
                  
                  Select seq_taskid.nextval into vtaskid from dual;
                  
                  
                  
                  
                  
                  Insert into listid (taskid,objid) 
                  
                  
                  Select vtaskid, id from myverybigtable where 1=1
                  
                  
                  
                  
                  
                  А потом вытаскивают данные по vtaskid.
                  
                  
                  Неужели так действительно быстрее?
                  
                  
                
Насколько я помню, в Оракле нет синтаксиса с RETURNING. И таким способом ты запоминаешь ИД для того, чтобы как раз прочитать запись потом. Ну, это ИМХО
быстрее по сравнению с чем?
Синтаксис то есть, просто не со всеми драйверами дружит. Т.к. RETURNING это PL/SQL конструкция, а не SQL
По сравнению с обычным select * from myverybigtable where 1=1 Where 1=1 - это динамически собранный sql со множеством джойнов
Разница должна быть минимальна, тут скорее логика для запоминания с каким среди данных работает конкретный таск
Вообще, судя по твоему запросу, данные не вытаскивают по vtaskid, а наоборот, генерируют. Т.е. создают результат в таблице listid для некого vtaskid
только в plsql-анонимном блоке работает
Не, это sql и работает везде
https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/RETURNING-INTO-clause.html#GUID-38F735B9-1100-45AF-AE71-18FB74A899BE
Ммм, похоже забыл... Ща попробую
Обсуждают сегодня