<html>
<head> <title>DELETE</title> </head> <BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000"> <p align="left">⚠ <b>
<span class="titulo">DELETE</span>⚠ </b>
</p>
<p align="left">⚠ <b>
Definicin⚠ </b>
</p>
<p align="left">Para borrar lneas de una tabla interna contamos
con la sentencia DELETE. Varios formatos de la sentencia nos permiten borrar lneas de una forma diferente.</p>
<p align="left">⚠ <b>
Sintaxis:⚠ </b>
</p>
bucle⚠ <a href="loop_endloop.htm" tppabs="loop_endloop.htm">
LOOP .. ENDLOOP⚠ </a>
. La sentencia DELETE borra la lnea que estemos tratando en el bucle.</p>
<pre>DELETE <tabla> INDEX <ndice>.</pre>
<ul><li>Con la clusula INDEX, el sistema borra la lnea con el ndice <ndice> en la tabla interna <tabla>. Despus de borrar la lnea, el ndice de la siguiente lnea es decrementado en 1. Si la operacin es completada, la variable SY-SUBRC vale 0. Si la lnea con el ndice <ndice> no existe, SY-SUBRC vale 4.</li>
</ul>
<pre>DELETE ADJACENT DUPLICATE ENTRIES FROM <tabla> [ COMPARING <c> ].</pre> <p>Esta sentencia borra todas las entradas duplicada adyacentesde una tabla interna. Dos lneas se consideran duplicadas si cumplen uno de los siguientes criterios de comparacin:</p>
<ul>
<li>Sin la clusula COMPARING, el contenido de los campos claves estndar deben ser iguales.</li> <li>Con la clusula COMPARING con el formato siguiente: COMPARING <c1> <c2> .... El contenidos de los campos ( c1, c2 ....) debe ser igual. Tambin se puede especificar el nombre de los campos que hay que comparar en tiempo de ejecucin utilizando la siguiente sintaxis: (<campo>). La variable <campo> contiene el nombre de la variable que se va a comparar. Si en el momento de procesar la sentencia DELETE, <campo> est vaco, el sistema la ignora. Si contiene el nombre invlido, se produce un error en tiempo de ejecucin.</li> <li>Con la clusula COMPARING con el siguiente formato: COMPARING ALL FIELDS, el contenido de todos los campos debe ser igual.</li>
</ul>
<p>Si el sistema borra al menos una lnea de la tabla la variableSY-SUBRC valdr 0 si no borra ninguna lnea, SY-SUBRC valdr 4. Es recomendable que la tabla interna este ordenada antes de ejecutar esta sentencia.</p>
<pre>DELETE <TABLA> [ FROM <n1> ] [ TO <n2> ] [ WHERE <condicin> ].</pre>
<p>Sentencia utilizada para borrar registros de una tabla de labase de datos. Con esta sentencia se puede borrar una o varias lneas de una tabla. Slo se pueden borrar lneas de una tabla a travs de una vista si sta slo hace referencia a una nica tabla.</p>
<p>Se debe indicar al menos una de las tres clusulas.</p>
<ul><li>Si utilizamos la sentencia sin la clusula WHERE, el sistema borrar todas las lneas de la tabla <tabla> cuyo ndice est comprendido entre <n1> y <n2>.</li> <li>Si no utilizamos la clusula FROM, el sistema borrar desde la primera lnea.</li> <li>Si no utilizamos la clusula TO, el sistema borrar hasta la ltima lnea.</li> <li>Con la clusula WHERE el sistema slo borrar aquellas lnea de la tabla <tabla> que cumplen la condicin especificada en <condicin>. En <condicin> se puede utilizar cualquier expresin lgica. El primer operando debe ser un componente de la estrucutra de lnea de la tabla interna. Si el sistema borra al menos una lnea la variable SY-SUBRC valdr 0, si no borra ninguna valdr 4.</li>
</ul>
<pre>DELETE {<tabla> | (<campo>) } [ CLIENT SPECIFIED ] [ FROM <rea> ].</pre> <ul><li>Con la clusula FROM, la lnea que se borra es la que coincide con la clave primara del rea <rea>. Sin la clusula FROM, la lnea que se borra es la que coincide con la clave primaria del rea de trabajo de la tabla tabla></li> <li>El rea de trabajo <rea> debe tener al menos, la longitud de la clave primaria. Si se borra al menos una lnea de la tabla la variable SY-SUBRC valdr 0, si no se borra ninguna valdr 4.</li> <li>Con la especificacin dinmica de la tabla, la clusula FROM es obligatoria.</li>
</ul>
<pre>DELETE FROM {<tabla> | (<campo>) } [ CLIENT SPECIFIED ] [ WHERE <condicin> ].</pre> <ul><li>Esta variante nos permite borrar una o varias lneas de la tabla <tabla> en funcin de las especificaciones de la clusula WHERE. Dicha clusula tiene las mismas opciones que las vistas para la sentencia⚠ <a href="select_endselect.htm" tppabs="select_endselect.htm">
SELECT⚠ </a>
. Si no especificamos la clusula WHERE, todas las lneas de la tabla se borran. <tabla> debe estar declarada con la sentencia⚠ <a href="tables.htm" tppabs="tables.htm">
TABLES⚠ </a>
.</li> <li>La variable del sistema SY-DBCNT contiene el nmero de lneas borrar. Si se borra al menos una lnea de la tabla la variable SY-SUBRC valdr 0, si no se borra ninguna valdr 4.</li>
</ul>
<p>Hay que vigilar mucho con la clusula WHERE para no borrartoda la tabla o lneas que no deseamos borrar. La nica forma de recuperar lo borrada es restaurar el backup de la base de datos.</p>
<pre>DELETE {<tabla> | (<tabla>) } [ CLIENT SPECIFIED ] FROM TABLE <tabla-interna>.</pre>
<p>Con esta variante se puede borrar lnea de una tabla de diccionario,basndose las lneas de una tabla interna. <tabla> y (<tabla>) sirve para especificar el nombre de la tabla de forma esttica o dinmica. Esta sentencia borra aquellas lneas de la tabla cuya clave primaria coincida con la definida en una lnea de la tabla interna. La tabla interna debe tener la longitud de la clave primaria de la tabla. Si el sistema no puede borrar ninguna entrada de la tabla porque no coincide ninguna clave primaria, el sistema continua con la siguiente lnea de la tabla interna. Si todas las lneas de la tabla interna se procesan, SY-SUBRC vale 0, en caso contrario vale 4. SY-DBCNT nos indica el nmero de lneas borradas. Si la tabla interna esta vaca, SY-SUBRC y SY-DBCNT valen 0.</p>
<p>⚠ <b>
Ejemplo 1:⚠ </b>
</p>
NAME(30) TYPE C, END OF NAMETAB.
...
DELETE NAMETAB FROM 5 TO 36 WHERE NAME CA 'ABC'.</pre> <p>⚠ <b>
Vease tambin:⚠ </b>
⚠ <a href="modify.htm" tppabs="modify.htm">
MODIFY⚠ </a>
, ⚠ <a href="append.htm" tppabs="append.htm">
APPEND⚠ </a>
,
⚠ <a href="insert.htm" tppabs="insert.htm">
INSERT⚠ </a>
.</p>
</body>
</html>