Está en la página 1de 5

[Año]

DOCUMENTACIÓN – INSERTAR REGISTROS EN


BASE DE DATOS

Curso – ABAP Open SQL


LOGALISAP
1

Contents
1. Sintaxis .................................................................................................................................................................2
2. Efecto....................................................................................................................................................................2
3. Comportamiento de las variables del sistema ..................................................................................................2
4. ACCEPTING DUPLICATE KEYS ..............................................................................................................................3
4.1. Utilizar ACCEPTING DUPLICATE KEYS ........................................................................................................3
4.2. Manejo de una excepción ..........................................................................................................................3
4.3. Errores de tiempo de ejecución .................................................................................................................4
5. Notas ....................................................................................................................................................................4

ABAP Open SQL logalisap.com


2

1. Sintaxis

INSERT { {INTO target VALUES wa }


| { target FROM wa| {TABLE itab} } }.

2. Efecto

La instrucción INSERT inserta uno o más registros especificados de la tabla


interna en la tabla de base de datos especificada en el destino. Las dos
variantes con INTO y VALUES o sin INTO con FROM se comportan de forma
idéntica, con la excepción de que no se pueden especificar tablas internas
después de VALUES.

Si se utiliza VALUES, debe haber un INTO entre INSERT y la tabla de base de


datos. Si se utiliza FROM, no se debe especificar INTO.

3. Comportamiento de las variables del sistema

• SY-SUBRC

- 0 cuando se declaró un área de trabajo en origen, se insertó el


registro. En la declaración de una tabla interna en el origen, se han
insertado todos los registros declarados o la tabla interna está vacía.
- 2 cuando se especificó una estructura de tipo LOB (Large Object) y los
componentes de identificador no LOB (los demás campos que no son
objetos grandes) no se escribieron en la base de datos.
- 4 cuando se especificó un área de trabajo en el origen, no se insertó
el registro. Cuando se especificó una tabla interna en el origen, no se
insertaron todas las filas declaradas, ya que una fila en la tabla de

ABAP Open SQL logalisap.com


3

base de datos tiene la misma clave primaria o un único índice


secundario.

• La sentencia INSERT establece en la variable del sistema SY-DBCNT el


número de filas insertadas. Si se produce un desbordamiento porque el
número o filas es mayor que 2.147.483.647, SY-DBCNT se establece en
-1. Si SY-SUBRC es 2, SY-DBCNT también se establece en el valor -1.

4. ACCEPTING DUPLICATE KEYS

... TABLE itab [ACCEPTING DUPLICATE KEYS] ...

Si un registro con la misma clave primaria o el mismo índice secundario


único existe en la tabla de base de datos para uno o más registros de los
que se van a insertar, estos registros no se pueden insertar. En esta
situación, existen tres posibilidades:

4.1. Utilizar ACCEPTING DUPLICATE KEYS

Si se especifica la adición ACCEPTING DUPLICATE KEYS, se insertan todos los


registros por lo cual es posible. Los registros restantes se descartan y el
sistema se establece en 4. El campo del sistema SY-DBCNT se establece en
el número de filas que se insertan.

4.2. Manejo de una excepción

Si la adición ACCEPTING DUPLICATE KEYS no se especifica, se genera la


excepción manejable de tipo CX_SY_OPEN_SQL_DB. Las filas siguen siendo
insertadas hasta que se genera la excepción. El programador tiene la
posibilidad de capturar la excepción. El número de filas insertadas no está
definido. Los campos del sistema SY-SUBRC y SY-DBCNT conservan su valor
anterior.

ABAP Open SQL logalisap.com


4

4.3. Errores de tiempo de ejecución

Si la adición ACCEPTING DUPLICATE KEYS no se especifica y si no se captura


la excepción, se produce un error de tiempo de ejecución. Esto ejecuta un
ROLLBACK de base de datos que vuelve a copiar todos los cambios a la base
de datos actual.

5. Notas

• Las filas insertadas se incluyen de forma permanente en la tabla en el


siguiente COMMIT de base de datos. Hasta este punto, todavía se pueden
eliminar de base de datos por un ROLLBACK.

• La instrucción INSERT establece un bloqueo en base de datos hasta el


siguiente COMMIT o ROLLBACK. Si se usa incorrectamente, esto puede
provocar un bloqueo llamado deadlock.

• El número de filas que se pueden insertar en las tablas de una base de


datos dentro de una LUW de base de datos es limitado, ya que un sistema
de base de datos sólo puede administrar una cantidad limitada de bloqueos
y datos en el área de ROLLBACK.

• La instrucción INSERT no se puede aplicar a la tabla de sistema TRDIR.

ABAP Open SQL logalisap.com

También podría gustarte