W Pub: ABAP Cursosentenciaupdate

<html>

<head>

<title>UPDATE</title>

</head>

<BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000">

<p align="left">⚠ &lt;b class="titulo"&gt;UPDATE⚠ &lt;/b&gt;</p>

<p align="left">⚠ &lt;b&gt;Definicin⚠ &lt;/b&gt;</p>

<p align="left">Sentencia utilizada para

modificar registros de una tabla de la base de datos. </p>

<p align="left">⚠ &lt;b&gt;Sintaxis:⚠ &lt;/b&gt;</p>

UPDATE { <tabla> | (<tabla>) } [ CLIENT SPECIFIED ] [ FROM <rea> ].

<p>Con esta variante de la sentencia UPDATE modificamos una sola

lnea de la tabla especificada. El significado de la clusula FROM es la

siguiente:</p>

<ul>

  <li>FROM -> El rea de trabajo <rea> sobrescribe la
    lnea de la tabla que tenga la misma clave primaria. La tabla <tabla>
    debe estar declarada con la sentencias TABLES. Si no especificamos la
    clusula FROM, ser el contenido del rea de trabajo de la propia tabla
    el que sobrescriba la lnea de la tabla con la misma clave primaria. El
    rea de trabajo <rea>debe tener la misma longitud que el rea de
    trabajo de la tabla. Para asegurarnos de que el rea de trabajo
    <rea> tiene la misma estructura que el rea de trabajo de la tabla
    <tabla> se suele declarar con la sentencia ⚠ &lt;a href="data.htm" tppabs="data.htm"&gt;DATA⚠ &lt;/a&gt;
    (o ⚠ &lt;a href="types.htm" tppabs="types.htm"&gt;TYPE⚠ &lt;/a&gt;) una estructura utilizando la clusula LIKE
    <tabla>.</li>

</ul>

<p>Si la operacin concluye satisfactoriamente, SY-SUBRC vale 0

y SY-DBCNT vale 1, en caso contrario SY-SUBRC vale 4 y SY-DBCNT vale 0. Se puede

especificar el nombre de la tabla en tiempo de ejecucin como veamos en

sentencias anteriores con la opcin (<campo>). Con esta opcin, la

clusula FROM es obligatoria y <rea> no puede ser la propia rea de

trabajo de la tabla.</p>

UPDATE <tabla> [ CLIENT SPECIFIED ] SET <set1> ... <setn> [ WHERE <condicin> ].

<p>Esta variante nos permite modificar 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 ⚠ &lt;a href="select_endselect.htm" tppabs="select_endselect.htm"&gt;SELECT⚠ &lt;/a&gt;.

Si no especificamos la clusula WHERE, todas las lneas de la tabla se

cambian. <tabla> debe estar declaradas con la sentencia ⚠ &lt;a href="tables.htm" tppabs="tables.htm"&gt;TABLES⚠ &lt;/a&gt;.</p>

<p>Para identificar las columnas a cambiar se utiliza la

clusula SET. La lista de comandos especificados en la clusula SET debe

respetar uno de los siguientes formatos:</p>

<ul>

  <li>- <f> = <g>. -> <f> es un campo de la
    tabla <tabla>. <g> es un valor.</li>
  <li>- <f> = <f> + <g>. -> <f> es un
    campo de la tabla <tabla>. <g> es un valor. El valor de
    <f> es incrementado con el valor de <g>.</li>
  <li>- <f> = <f> - <g>. ->  <f>
    es un campo de la tabla <tabla>. <g> es un valor. El valor de
    <f> es decrementado con el valor de <g>. <g> puede ser un
    literal o una variable.</li>

</ul>

<p>Para ver la regla de conversin entra campos de la base de

datos y campos de un programa, ver la clusula INTO de la sentencia SELECT.</p>

<p>SY-DBCNT contiene el nmero de lneas cambiadas. SY-SUBRC es

0 si al menos una lnea es cambiada y 4 si ninguna lnea es cambiada. En esta

variante de sentencia no se puede especificar el nombre de la tabla en tiempo de

ejecucin.</p>

<pre>UPDATE { <tabla> | (<tabla>) } [ CLIENT SPECIFIED ] [ FROM TABLE <tabla_interna> ].</pre>

<p>Otra forma de actualizar varias lneas de una tabla es con la

anterior variante de la sentencia UPDATE. Se puede definir la tabla que hay que

actualizar estticamente con la opcin <tabla>, o dinmicamente con la

opcin (<tabla>).</p>

<p>Las lneas de la tabla interna sobrescriben las lneas de la

tabla internas que tengan la misma clave primaria. Las lneas de la tabla

interna <tabla_interna> deben tener la misma longitud que el rea de

trabajo de la tabla. Para asegurarnos de esto, se suele declarar la tabla

interna (en el DATA o TYPE) con la misma estructura que la tabla de diccionario

(clusula LIKE).</p>

<p>Si el sistema no puede cambiar una lnea porque la clave

primaria no existe en la tabla de la base de datos, el sistema contina con la

siguiente lnea de la tabla interna. Si todas las lneas se procesan

satisfactoriamente, SY-SUBRC vale 0, en caso contrario vale 4. SY-DBCNT toma el

valor del nmero de lneas actualizadas por la sentencia.</p>

<p>Con esta sentencia sucede lo mismo que con la sentencia ⚠ &lt;a href="insert.htm" tppabs="insert.htm"&gt;INSERT⚠ &lt;/a&gt;.

Es mucho ms eficiente modificar un conjunto de lneas en una sola operacin

(segunda variante de la sentencia UPDATE) que modificarlas una a una (primera

variante de la sentencia UPDATE).</p>

<p>⚠ &lt;b&gt;Ejemplo 1:⚠ &lt;/b&gt;</p>

<pre>UPDATE SCUSTOM SET: DISCOUNT = '003',

                    TELEPHONE = '0621/444444'
              WHERE ID        = '00017777'.</pre>

<p>⚠ &lt;b&gt;Ejemplo 2:⚠ &lt;/b&gt;</p>

<pre>TABLES SCUSTOM.

DATA WA LIKE SCUSTOM.</pre>

<pre>WA-ID = '12400177'.

WA-TELEPHONE = '06201/44889'.

UPDATE SCUSTOM FROM WA.</pre>

<p>⚠ &lt;b&gt;Vase tambin:⚠ &lt;/b&gt; ⚠ &lt;a href="modify.htm" tppabs="modify.htm"&gt;MODIFY⚠ &lt;/a&gt;, ⚠ &lt;a href="insert.htm" tppabs="insert.htm"&gt;INSERT⚠ &lt;/a&gt;.</p>

</body>

</html>