<html>
<head> <title>UPDATE</title> </head> <BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000"> <p align="left">⚠ <b class="titulo">
UPDATE⚠ </b>
</p>
<p align="left">⚠ <b>
Definicin⚠ </b>
</p>
<p align="left">Sentencia utilizada para
modificar registros de una tabla de la base de datos. </p>
<p align="left">⚠ <b>
Sintaxis:⚠ </b>
</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⚠ <a href="data.htm" tppabs="data.htm">
DATA⚠ </a>
(o⚠ <a href="types.htm" tppabs="types.htm">
TYPE⚠ </a>
) 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⚠ <a href="select_endselect.htm" tppabs="select_endselect.htm">
SELECT⚠ </a>
.
Si no especificamos la clusula WHERE, todas las lneas de la tabla se
cambian. <tabla> debe estar declaradas con la sentencia ⚠ <a href="tables.htm" tppabs="tables.htm">
TABLES⚠ </a>
.</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⚠ <a href="insert.htm" tppabs="insert.htm">
INSERT⚠ </a>
.
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>⚠ <b>
Ejemplo 1:⚠ </b>
</p>
<pre>UPDATE SCUSTOM SET: DISCOUNT = '003',
TELEPHONE = '0621/444444' WHERE ID = '00017777'.</pre>
<p>⚠ <b>
Ejemplo 2:⚠ </b>
</p>
⚠ <b>
Vase tambin:⚠ </b>
⚠ <a href="modify.htm" tppabs="modify.htm">
MODIFY⚠ </a>
, ⚠ <a href="insert.htm" tppabs="insert.htm">
INSERT⚠ </a>
.</p>
</body>
</html>