PDA

Ver la Versión Completa : EXEC SQL... INSERT - Problemas de tiempo


malaga01
28/10/09, 13:22:32
Hola:

Tengo un problema de tiempo con sql nativo al hacer un insert, el código funciona, lee de la tabla interna e inserta los registros en la tabla de oracle. El problema viene cuando la tabla interna tiene muchos registros, tarda demasiado.

¿Sabeis si hay alguna manera de mejorar este código apra que no tenga que hacer un exec sql .... endexec por cada registro de la tabla interna? ¿Se puede insertar todo en bloque?

Este es el código que tengo, ¿lo veis mejorable?

LOOP AT i_table.

EXEC SQL.

insert into oracle_table@db
(value1,
Value2
)
values
(:i_table-val1,
:i_table-val2
)

ENDEXEC.

ENDLOOP.

Muchas gracias por vuestra ayuda.

Un saludo.

THOR2000
17/12/10, 09:57:34
Hola,
Yo tenía el mismo problema y buscando solución he encontrado tu mensaje.
Como he encontrado la solución te respondo.

Olvidate del EXEC SQL ... ENDEXEC y utiliza:

INSERT <dbtab> CONNECTION <name> FROM TABLE <i_tab> .

donde <dbtab> es el nombre de la tabla en el sistema externo
<name> es el nombre del DBlink de la bbdd remota definida en la tabla DBCON (transaccion DBCO), y <i_tab> es la tabla interna que contiene los datos a insertar.

Requisitos: <dbtab> debe estar definida con el mismo nombre y estructura en SAP para que entienda la estructura a cargar. Yo la he creado como temporal.
O al reves, claro, que la tabla externa esté definida igual que una de SAP.

Un proceso de 12 minutos ha bajado a 3 segundos.
Tengo otro que tarda 7 horas. (A ver en cuanto se queda).

Espero que te sirva, aunque llegue tarde.

malaga01
30/03/11, 15:06:44
Muchas gracias por la información.

nas
12/02/13, 21:40:52
Buenas tardes, estoy teniendo el mismo problema de tiempo, y probe la linea de codigo que dijo usted
INSERT <dbtab> CONNECTION <name> FROM TABLE <i_tab>,
realize todos los requisitos solicitados y no me funciona, podrias ayudarme dandome un ejemplo de como lo utilizas, muchas gracias.

mgarciaf
19/02/13, 21:14:19
Hola

Estaba intentando utilizar la sentencia que sugieres pero me da error en la palabra CONNECTION.

Saludos.