Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Update con select para sacar el nombre de la tabla

Estas en el tema de Update con select para sacar el nombre de la tabla en el foro de Oracle en Foros del Web. Hola a todos, Acabo de empezar a trabajar con oracle y me ha surgido un problema que no se como resolver. Quiero hacer un update ...
  #1 (permalink)  
Antiguo 02/04/2009, 05:55
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años, 7 meses
Puntos: 0
Update con select para sacar el nombre de la tabla

Hola a todos,

Acabo de empezar a trabajar con oracle y me ha surgido un problema que no se como resolver.

Quiero hacer un update de una tabla, pero el nombre de la tabla lo hago sacandolo de otra tabla mediante un select, pero no es el nombre completo., os pongo un ejemplo

SELECT nombre_tabla FROM todas_las_tablas WHERE tipo = (select tipo from tabla_parametros where codigo='XXXXX');

Entonces de esta manera saco el nombre de la tabla y ahora quiero hacer un update con ese nombre que he optenido añadiendo delante un texto

update YYYY_(nombre_tabla optenido anteriormente) set.........

He intendado hacer un procedimiento y meter el nombre de la tabla optenido de la select en una variable y pasarselo al update concatenando con el texto que tiene que tener delante. Es el siguiente:

CREATE OR REPLACE PROCEDURE updates_complicados
is
tabla VARCHAR2(200);
begin

SELECT nombre_tabla INTO tabla FROM todas_las_tablas WHERE tipo = (select tipo from tabla_parametros where codigo='XXXXX');

update YYYY_(nombre_tabla optenido anteriormente) set.........

end;


No se si me he explicado bien.

Muchas gracias por vuestra ayuda.
  #2 (permalink)  
Antiguo 02/04/2009, 05:59
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Respuesta: Update con select para sacar el nombre de la tabla

cadena_update := 'update nombre_tabla optenido anteriormente set.........';
execute immediate (cadena_update);
  #3 (permalink)  
Antiguo 02/04/2009, 07:24
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Update con select para sacar el nombre de la tabla

Muchas gracias por tu ayuda, me ha sido de gran utilidad.

Gracias!!!
  #4 (permalink)  
Antiguo 06/04/2009, 01:25
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 5 meses
Puntos: 43
Respuesta: Update con select para sacar el nombre de la tabla

A mandar.

  #5 (permalink)  
Antiguo 15/04/2009, 11:43
 
Fecha de Ingreso: agosto-2007
Mensajes: 10
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Update con select para sacar el nombre de la tabla

Esto te puede servir
function modificar( )
{

$SqlUpdate="update USER_IMED.DOLLAR_LOGIN SET END_DATE=sysdate where ID = (select max(ID) from USER_IMED.DOLLAR_LOGIN WHERE ID_USER=$_REQUEST[no])";
echo "<pre>$SqlUpdate</pre>";
$sth = oci_parse ($GLOBALS["dbh"],$SqlUpdate);
if (oci_execute($sth, OCI_DEFAULT)) {
oci_commit($GLOBALS[dbh]);
} else {
$erra = oci_error($sth);
save_sql_debug_data($SqlUpdate, "ERROR: ${erra['code']} ${erra['message']}");
echo "<!-- ERROR: ${erra['code']} ${erra['message']} -->";
}
}
  #6 (permalink)  
Antiguo 15/04/2009, 20:33
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
Respuesta: Update con select para sacar el nombre de la tabla

Cita:
Iniciado por alexluz Ver Mensaje
Esto te puede servir
function modificar( )
{

$SqlUpdate="update USER_IMED.DOLLAR_LOGIN SET END_DATE=sysdate where ID = (select max(ID) from USER_IMED.DOLLAR_LOGIN WHERE ID_USER=$_REQUEST[no])";
echo "<pre>$SqlUpdate</pre>";
$sth = oci_parse ($GLOBALS["dbh"],$SqlUpdate);
if (oci_execute($sth, OCI_DEFAULT)) {
oci_commit($GLOBALS[dbh]);
} else {
$erra = oci_error($sth);
save_sql_debug_data($SqlUpdate, "ERROR: ${erra['code']} ${erra['message']}");
echo "<!-- ERROR: ${erra['code']} ${erra['message']} -->";
}
}
es mi imaginacion o como que andas perdido de foro?
__________________
Blogzote.com :-) Mi blog
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:57.