
    Новые сообщения [новые:0]
  
  Дайджест 
  
  Горячие темы
    Избранное [новые:0]
  
Форумы 
 
Пользователи 
Статистика 
Статистика нагрузки 
    Мод. лог 
  
  Поиск 
  | 
| 
 24.03.2020, 12:31 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Как записать выражение merge через лямбда выражения: PreparedStatement s2 = to.prepareStatement("MERGE INTO " + table2 +" target" + " USING (SELECT ? DictionaryId," + "? RegistryId) src " + "ON (target.DictionaryId=src.DictionaryId)" + " WHEN MATCHED THEN UPDATE SET RegistryId=src.RegistryId " + "WHEN NOT MATCHED THEN INSERT (DictionaryId, RegistryId)" + " VALUES (src.DictionaryId, src.RegistryId)" + ";"); - это работает, теперь пробую через ламбда выражения: PreparedStatement s2 = to.prepareStatement( "MERGE INTO " + table2 + " target" + " USING (SELECT ? Id, ? Name, ? Year) src" + " ON (target.Id=src.Id)" + " WHEN MATCHED THEN UPDATE SET Name=src.Name, Year=src.Year " + "WHEN NOT MATCHED THEN INSERT ("+columns.stream().collect(Collectors.joining(","))+")" + " VALUES ("+ columns.stream().collect(Collectors.joining(","))+")" + ";"); смог только так, а как полностью через лямбда? Помогите плиз! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 13:04 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Alex87 VALUES ("+  columns.stream().collect(Collectors.joining(","))+")" ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 13:05 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Тебе к ваде. Он любит строки плюсовать. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 13:11 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Что за топики на Sql.ru пошли ((( Если не можете научиться пользоваться Debug'ером, то как минимум откройте для себя "чудо-команду" System.out.println( .... ) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 14:22 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  пробовал заменить строку: + " USING (SELECT ? Id, ? Name, ? Year) src" на + " USING (SELECT " + columns.stream().map((c) ->"?"+c).peek(System.out::println).collect(Collectors.joining(",")) + ") src" не проходит ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 14:41 
 | 
|||
|---|---|---|---|
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Я уже писал выше что сообщество джавистов - инфантильно и подвержено каким-то странным движениям и трендам. Типа взять старый (100% работающий императивный код) и переписать - всё на лямбдах. - все на асинках (Futures/Completable Futures) - всё на аннотациях (зачем сцуко?!) При этом что ни один из этих пунктов архитектурно не обоснован и не имеет под собой какого-либо полезного эффекта. Так... переписать ради переписывания. ... онанизм мозга вроде как. Ой прав был старик Пелевин почти во всех своих прогнозах. P.S. Предполагаю что такие задачи ставят тех-лиды на собеседовании смеху ради. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 14:58 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Чтобы не писать километры кода, когда надо обработать кучу таблиц, а воспользоваться общим лямбда-выражением ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 14:59 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Alex87 не проходит так Вы результат вывода System.out.println покажите. Хрустальный шар не умеет смотреть в адресное пространство remote компьютеров и предсказывать, что за мусор в Ваших переменных. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 15:02 
 | 
|||
|---|---|---|---|
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Alex87, друг. Для этого есть обычные процедурные шаблоны такие как  - introduce procedure, - introduce temporary variable e.t.c. Их много. И они работают уже более 50 лет в разных языках. Основное назначение лямбды - передать свою implicite логику в данном вызове. Как шаблон стратегия. В твоем случае - процедура тебе поможет. Как ни странно. Код: java 1. 2. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 15:03 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Alex87 Чтобы не писать километры кода Или непогрешим? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 15:08 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  mayton В твоем случае - процедура тебе поможет. Как ни странно. Код: java 1. 2. CALL Выполни(?,?,?,?) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 15:26 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Понравился классический код копирования данных из одной remote таблицы в другую: PreparedStatement s2 = to.prepareStatement( "INSERT INTO " + table2 + " (" + columns.stream().collect(Collectors.joining(",")) + ") VALUES (" + columns.stream().map(c -> "?").collect(Collectors.joining(",")) + ")" ); хотелось то же проделать c merge, а процедуры это детали ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 15:52 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Ну проделай. Команда это всего лишь строчка. Не суметь собрать строчку нужного вида - это нужно постараться. Не уметь пользоваться отладочной печатью или дебагером, что бы понять, какая именно строка (SQL-команда) получилась после работы Вашего кода - нужно постараться На бесмысленные восклицания "не работает, помогите", можно получить только такой же бесмысленный ответ. IMHO & AFAIK ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 16:08 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Образец представлен см. выше, tracer и debug для конкретного случая, речь идет об  общем случае. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 16:13 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Alex87 Понравился классический код копирования данных из одной remote таблицы в другую: Но мы не разделяем вашей радости. Alex87 речь идет об  общем случае. Рано еще. Стас?)))))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 16:25 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Если крут, собери инструкцию merge на лямбде, а так пустой разговор, я пока собрал на половину и она работает ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 16:46 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Alex87 Если крут, собери инструкцию merge на лямбде, а так пустой разговор, я пока собрал на половину и она работает ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 24.03.2020, 18:01 
 | 
|||
|---|---|---|---|
  
  | 
|||
Merge Lambda  | 
|||
| 
 #18+ 
  
    
  Просек, как надо: PreparedStatement s2 = to.prepareStatement( "MERGE INTO " + table2 + " target" + " USING ( SELECT "+ columns.stream().map(c -> "? "+c).peek(System.out::println).collect(Collectors.joining(","))+" ) src" // + " USING (SELECT ? Id, ? Name, ? Year) src" + " ON (target.Id=src.Id)" + " WHEN MATCHED THEN UPDATE SET " + columns.stream().map(c -> c+"=src."+c).peek(System.out::println).collect(Collectors.joining(",")) +" " // + " WHEN MATCHED THEN UPDATE SET Name=src.Name, Year=src.Year " + "WHEN NOT MATCHED THEN INSERT ("+columns.stream().collect(Collectors.joining(","))+")" + " VALUES ("+ columns.stream().collect(Collectors.joining(","))+")" // + " VALUES (src.Id, src.Name, src.Year)" + ";"); ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
  | 

start [/forum/topic.php?fid=59&tablet=1&tid=2120867]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    14ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    39ms | 
get topic data:  | 
    14ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    58ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 14ms | 
| total: | 162ms | 

    | 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.