2017-02-14 4 views
0

Я выполняю оператор слияния для вставки/обновления столбца типа данных datetime в sql-сервере.преобразование не удалось при преобразовании даты и/или времени из символьной строки в mule batch commit

payload.date выглядит как 2014-02-03 00: 00: 00,000

Batch завершается с ошибкой 'не удалось преобразования при преобразовании даты и/или времени из символьной строки'

 <batch:step name="step_1"> 
    <batch:commit doc:name="Batch Commit" size="100"> 
      <db:execute-ddl config-ref="config" doc:name="merge" > 
       <db:dynamic-query><![CDATA[ 
       BEGIN 
       MERGE tablename AS Target 
       USING (SELECT '#[payload.key]') AS Source (ID) 
       ON (Destination.Id=Source.ID) 
       WHEN MATCHED THEN UPDATE SET 
       datefield = '#[payload.date]' 
       WHEN NOT MATCHED THEN 
       INSERT (datefield) values ('#[payload.date]'); 

       END]]></db:dynamic-query> 
          </db:execute-ddl> 
      </batch:commit> 
    </batch:step> 

Если Я удаляю пакетную фиксацию, я не получаю никакой ошибки, и оператор слияния отлично работает, и даты обновляются/вставляются в БД. Я хочу использовать пакетную фиксацию, как я могу решить эту проблему?

+0

SQL Server бросает ошибку, потому что полезная нагрузка и список payload.date является нулем внутри партии фиксации. Что я должен использовать вместо # [payload.date], учитывая, что полезная нагрузка - это список? – user94538

ответ

0

навалом режим не поддерживается для выполнения операции DDL так пакетный фиксации не может быть использована