Появился такой вопрос мы используем SOQL query в цикле что бы обойти ошибку heap size при больших данных, то есть можно использовать batch и принципе сделать тоже самое,но так значительно проще при работе с большими данными,Так же я помню что секюрити scanner баннет SOQL query в цикле.То есть сразу несколько вопросов зачем было это делать если это не проходит по секюрити сканеру следовательно не может быть выложенно в ApexChange,чего я еще не знаю про запросы в циклах и какие засады там есть ?
ссылка : http://www.salesforce.com/us/developer/docs/apexcode/Content/langCon_apex_loops_for_SOQL.htm
Появился такой вопрос мы используем SOQL query в цикле что бы обойти ошибку heap size при больших данных, то есть можно использовать batch и принципе сделать тоже самое,но так значительно проще при работе с большими данными,Так же я помню что секюрити scanner баннет SOQL query в цикле.То есть сразу несколько вопросов зачем было это делать если это не проходит по секюрити сканеру следовательно не может быть выложенно в ApexChange,чего я еще не знаю про запросы в циклах и какие засады там есть ? ссылка : [url]http://www.salesforce.com/us/developer/docs/apexcode/Content/langCon_apex_loops_for_SOQL.htm[/url]
Почитал доку по твоей ссылке - это не SOQL в for. Это вообще что-то интересное Первый раз такое вижу -
for (Account[] tmp : [SELECT Id FROM Account WHERE Name = 'yyy']) {
}
Получается что SOQL запрос отдает не всю пачку (List) сразу, а пачки по 200 записей. Похоже такой lazy load по описанию получается, чтобы не опрокинуть heap size.
По ходу на эту структуру Security Scanner не должен ругаться.
Почитал доку по твоей ссылке - это не SOQL в for. Это вообще что-то интересное :) Первый раз такое вижу - for (Account[] tmp : [SELECT Id FROM Account WHERE Name = 'yyy']) { } [quote]DML statements can only process up to 10,000 records at a time, and sObject list for loops process records in batches of 200[/quote] Получается что SOQL запрос отдает не всю пачку (List) сразу, а пачки по 200 записей. Похоже такой lazy load по описанию получается, чтобы не опрокинуть heap size. По ходу на эту структуру Security Scanner не должен ругаться.
Сергей, Дима.
Спасибо за интересную "пищу для ума".
Есть над чем подумать...
Вот еще какой-то документ (вытекает из предыдущего)
https://www.salesforce.com/us/developer/docs/apexcode/Content/langCon_apex_SOQL_VLSQ.htm
Сергей, Дима. Спасибо за интересную "пищу для ума". Есть над чем подумать... Вот еще какой-то документ (вытекает из предыдущего) [url]https://www.salesforce.com/us/developer/docs/apexcode/Content/langCon_apex_SOQL_VLSQ.htm[/url]
[quote="Dmitry Shnyrev"]Почитал доку по твоей ссылке - это не SOQL в for. Это вообще что-то интересное :) Первый раз такое вижу - for (Account[] tmp : [SELECT Id FROM Account WHERE Name = 'yyy']) { } [quote]DML statements can only process up to 10,000 records at a time, and sObject list for loops process records in batches of 200[/quote] Получается что SOQL запрос отдает не всю пачку (List) сразу, а пачки по 200 записей. Похоже такой lazy load по описанию получается, чтобы не опрокинуть heap size. По ходу на эту структуру Security Scanner не должен ругаться.[/quote] Cпециально проверю еще раз.насчет сканера.
Почитал доку по твоей ссылке - это не SOQL в for. Это вообще что-то интересное Первый раз такое вижу
Ну как это первый раз видишь! А кто вам "мозг сломал" несколько месяцев назад этой схемой?
Я нашел ее в базовом APEX workbook:
http://www.salesforce.com/us/developer/docs/apex_workbook/Content/apex_govlimits_overview.htm
в самом низу.
но ни разу ее не использовал. Как и батч.
Так что вопрос остается: когда использовать такой подход - цикл-обертка выкверивающий пачками по 200 и подающие эти пачки в работу или батч.
[quote="Dmitry Shnyrev"]Почитал доку по твоей ссылке - это не SOQL в for. Это вообще что-то интересное :) Первый раз такое вижу[/quote] Ну как это первый раз видишь! А кто вам "мозг сломал" несколько месяцев назад этой схемой? Я нашел ее в базовом APEX workbook: [url]http://www.salesforce.com/us/developer/docs/apex_workbook/Content/apex_govlimits_overview.htm[/url] в самом низу. но ни разу ее не использовал. Как и батч. Так что вопрос остается: когда использовать такой подход - цикл-обертка выкверивающий пачками по 200 и подающие эти пачки в работу или батч.
Ну как это первый раз видишь! А кто вам "мозг сломал" несколько месяцев назад этой схемой?
Всё! Старею :)
[quote]Ну как это первый раз видишь! А кто вам "мозг сломал" несколько месяцев назад этой схемой?[/quote] Всё! Старею :)
Если вдруг комуто будет интересно, вот прикольная стаття
https://developer.salesforce.com/page/Apex_Code_Best_Practices
А что такое Security Scanner? Для чего он предназначен?
Если вдруг комуто будет интересно, вот прикольная стаття :D [url]https://developer.salesforce.com/page/Apex_Code_Best_Practices[/url] А что такое Security Scanner? Для чего он предназначен?