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.