Ой, я просто отправил простофиля этого вопроса ...
ответ, существует не создано в функции как Oracle, Самая Большая , но можно достигнуть подобного результата для 2 столбцов с UDF, отметьте, использование sql_variant довольно важно здесь.
create table #t (a int, b int)
insert #t
select 1,2 union all
select 3,4 union all
select 5,2
-- option 1 - A case statement
select case when a > b then a else b end
from #t
-- option 2 - A union statement
select a from #t where a >= b
union all
select b from #t where b > a
-- option 3 - A udf
create function dbo.GREATEST
(
@a as sql_variant,
@b as sql_variant
)
returns sql_variant
begin
declare @max sql_variant
if @a is null or @b is null return null
if @b > @a return @b
return @a
end
select dbo.GREATEST(a,b)
from #t
Отправил этот ответ:
create table #t (id int IDENTITY(1,1), a int, b int)
insert #t
select 1,2 union all
select 3,4 union all
select 5,2
select id, max(val)
from #t
unpivot (val for col in (a, b)) as unpvt
group by id
Вы не можете этого сделать. Из документации для IEnumerator
:
Перечислитель остается действительным, пока коллекция остается без изменений. Если вносятся изменения в коллекцию, например, добавление, изменение или удаление элементов, перечислитель безвозвратно признан недействительным и его поведение не определено.
Альтернативы:
Последний из эти альтернативы представляют собой LINQ-подобное решение, где вы обычно пишете:
var newList = oldList.Where(x => ShouldBeRetained(x)).ToList();
(где ShouldBeRetained
- это любая логика, которая вам нужна, конечно.) необходимо только в том случае, если вы действительно хотите, чтобы он был в списке. Это приводит к более декларативному коду, который часто легче читать. Я могу'
Вы должны знать, что в некоторых версиях Tomcat возникают утечки памяти при передислокации во время войны. Это случилось со мной на tomcat 6.0.x.
Как было предложено увеличить MaxPermSize , это временное решение для вашей машины разработки - и когда вы получите сообщение об ошибке, через 2-3 дня просто перезапустите сервер. На производстве не все так просто. Итак, этот работает для разработки , но этот подход не работает для производственной среды , где вы должны исправить проблемы с утечками памяти.
Чтобы обнаружить утечки, используйте Приложение jconsole , которое поставляется с jdk 1.6 и 1.5. Вы можете выполнить привязку к процессу и наблюдать за использованием памяти с течением времени.
Вы также можете прочитать это:
Вы определенно не можете каким-либо образом изменять коллекцию, используя для нее цикл foreach.
Вы можете использовать цикл for и управлять индексом самостоятельно или сделать копию коллекции и пока вы зацикливаете оригинал, удалите из копии элементы, которые соответствуют элементу в оригинале.
В обоих случаях это не так ясно и удобно :).