Está en la página 1de 7

[Año]

DOCUMENTACIÓN – OPEN CURSOR

Curso – ABAP Open SQL


LOGALISAP
1

Contents
1. OPEN CURSOR......................................................................................................................................................2
1.1. Sintaxis .........................................................................................................................................................2
1.2. Efecto ...........................................................................................................................................................2
1.3. Notas............................................................................................................................................................3
2. FETCH ...................................................................................................................................................................3
2.1. Sintaxis .........................................................................................................................................................3
2.2. Efecto ...........................................................................................................................................................3
2.3. Comportamiento de las variables del sistema..........................................................................................4
2.4. Notas............................................................................................................................................................5
3. CLOSE CURSOR.....................................................................................................................................................5
3.1. Sintaxis .........................................................................................................................................................5
3.2. Efecto ...........................................................................................................................................................5
3.3. Notas............................................................................................................................................................5

ABAP Open SQL logalisap.com


2

1. OPEN CURSOR

1.1. Sintaxis

OPEN CURSOR [WITH HOLD] dbcur FOR


SELECT result
FROM source
[[FOR ALL ENTRIES IN itab] WHERE sql_cond]
[GROUP BY group] [HAVING group_cond]
[ORDER BY sort_key].

1.2. Efecto

Esta sentencia abre un cursor de base de datos para la selección


definida después de FOR, y asocia una variable de cursor con el
cursor de base de datos. El conjunto de resultados de la selección se
puede leer con la instrucción FETCH.

El cursor dbcur espera una variable declarada con el cursor de tipo de


datos predefinido específico. Un cursor de base de datos que se ha
abierto no puede ser abierto otra vez. Una línea del conjunto de
resultados siempre se asigna en base de datos al cursor abierto como
una posición del cursor. Después de la instrucción OPEN CURSOR, la
posición del cursor se coloca delante de la primera línea del conjunto
de resultados.

Después de FOR, se puede introducir la sintaxis de una instrucción


SELECT que contiene todas las adiciones de la sentencia SELECT
normal, excepto para INTO y APPENDING.

SELECT SINGLE, SELECT SINGLE FOR UPDATE y SELECT COUNT( *) no


pueden ser utilizados en la sentencia OPEN CURSOR.

ABAP Open SQL logalisap.com


3

Si se especifica la adición WITH HOLD, el cursor de la base de datos


no se cierra mediante el commit de base de datos ejecutado con
Native SQL.

1.3. Notas

La adición WITH HOLD es ignorada por los commit implícitos de la


base de datos, por los commit producidos por la declaración
COMMIT WORK, o por cualquier reversión que siempre cierra el
cursor de base de datos.

Un commit de base de datos SQL nativo se puede realizar utilizando


el módulo de función DB_COMMIT.

2. FETCH

2.1. Sintaxis

FETCH NEXT CURSOR dbcur {INTO|APPENDING} target.

2.2. Efecto

Esta sentencia extrae las filas solicitadas (usando la adición INTO o


APPENDING) del conjunto de resultados del cursor de base de datos
(asociado con la variable cursor dbcur) de la posición actual del
cursor y asigna estas filas a los objetos de datos especificados en el
conjunto de resultados.

La variable de cursor dbcur debe ser una variable declarada por el


cursor de tipo de datos predefinido especial, que se abrió con la
sentencia OPEN CURSOR, o se le asignó otro cursor. De lo contrario,
se produce una excepción manejable.

ABAP Open SQL logalisap.com


4

La sintaxis y el significado de la adición INTO o el objetivo


APPENDING son completamente sinónimos de las adiciones idénticas
de la sentencia SELECT.

Si se especifica un área de trabajo después de INTO, se extrae una


fila. Si se especifica una tabla interna después de INTO o APPENDING,
entonces se extraen todas las filas o tantas como se especifica en la
adición PACKAGE SIZE.

FETCH NEXT CURSOR dbcur


INTO TABLE itab PACKAGE SIZE n.

La instrucción FETCH mueve la posición del cursor de la base de datos


(que está asociada con dbcur) por la cantidad de filas extraídas a la
siguiente fila que se va a extraer. Si la última fila del conjunto de
resultados se extrajo en una instrucción FETCH, cada instrucción
FETCH posterior en la que dbcur está asociado con el mismo cursor
de base de datos establece el valor de la variable del sistema SY-
SUBRC en 4, sin afectar a los objetos de datos especificados después
de INTO o APPENDING.

2.3. Comportamiento de las variables del sistema

La sentencia FETCH establece los valores de los campos del sistema


SY-SUBRC y SY-DBCNT.

SY-SUBRC Significado
0 Al menos una fila se extrajo del conjunto de resultados.
4 No se extrajo ninguna fila.

Después de cada extracción de fila, la instrucción FETCH establece en


la variable del sistema SY-DBCNT la cantidad de filas extraídas hasta
ahora del conjunto de resultados relevantes. Si se produce un
desbordamiento porque el número o filas es mayor que

ABAP Open SQL logalisap.com


5

2,147,483,647, SY-DBCNT se establece en -1. Si no se puede extraer


ninguna fila, SY-DBCNT se establece en 0.

2.4. Notas

Las sentencias FETCH que acceden a las líneas de resultados pueden


tener las adiciones INTO o APPENDING. Se pueden especificar áreas
de trabajo o tablas internas.

Depende del sistema de base de datos si el cursor en base de datos


se cierra implícitamente después de la extracción de la última fila del
conjunto de resultados o no. Por esta razón, siempre es mejor utilizar
explícitamente la instrucción CLOSE CURSOR.

3. CLOSE CURSOR

3.1. Sintaxis

CLOSE CURSOR dbcur.

3.2. Efecto

Esta instrucción cierra el cursor de la base de datos e inicializa la


variable del cursor dbcur.

3.3. Notas

Dado que sólo un número limitado de cursores de base de datos


puede abrir simultáneamente, debe cerrar todos los cursores de base
de datos que ya no necesita en la lógica de programación.

Inicializar una variable de cursor utilizando la instrucción CLEAR, no


es suficiente para cerrar el cursor de base de datos.

ABAP Open SQL logalisap.com


6

Una vez cerrado el cursor de la base de datos, ya no se puede


acceder a él. Otras variables de cursor que se vincularon con el cursor
de base de datos no se inicializan, pero se convierten en no válidas y
al acceder a ellas podría generar una excepción que se puede
manejar.

ABAP Open SQL logalisap.com

También podría gustarte