Ver Mensaje Individual
  #1  
Antiguo 27-11-2014
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
Realizar un MERGE con los ADOConnection

Buenas,

Estoy intentando realizar un MERGE a una tabla en un servidor MSSQL a traves de los componentes ADO, en particular la consulta es

Código SQL [-]
merge STOCKS as target
using (values ('X3', '03', '2014-11-27', 'SA123', 3))  as source 
(EMPRESA,ALMACEN,FECHA,ARTICULO,UNIDADES)   on 
   target.empresa= source.empresa and 
   target.almacen=source.almacen and 
   target.fecha=source.fecha and 
   target.articulo=source.articulo
when matched then
    update
    set UNIDADES = source.UNIDADES
when not matched then
    insert (EMPRESA,ALMACEN,FECHA,ARTICULO,UNIDADES)
    values (
      source.EMPRESA,
      source.ALMACEN,
      source.FECHA,
      source.ARTICULO,
      source.UNIDADES,
    );

Pero siempre obtengo el error "Sintaxis incorrecta cerca de la palabra 'merge'"
He intentado ejecutarlo desde los componentes ADOCommandText, ADOQuery y directamente ejecutandolo con el ADOConnection.Execute siempre con el mismo resultado.

Dicha instrucción SQL es correcta y si la ejecuto en la aplicación Microsoft SQL Server Management Studio, se ejecuta sin problemas y obtengo los resultados esperados de inserción/actualización.

Esta consulta es en MSSQL es equivalente a hacer en MySQL un
Código SQL [-]
INSERT INTO .. ON DUPLICATE KEY UPDATE...

Comentar que estoy usando Delphi XE4, de servidor de datos MSSQL2005 y la conexión al servidor la realizo directamente a través de SQL NATIVE CLIENT.

También he intentando ejecutar dicha consulta con los componentes ZEOS, pero el resultado nuevamente ha sido el mismo.

Me da la impresión que el error al darlo en español lo este generando el SQL NATIVE CLIENT, pero ya lo actualice a la ultima versión del mismo, sin obtener ningún cambio.

Y buscando en google sobre este error tampoco he obtenido resultados.

Gracias anticipadas por su ayuda.
Responder Con Cita