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

Problema con iF

Estas en el tema de Problema con iF en el foro de Oracle en Foros del Web. Hola, una preguntota nada más. Estoy haciendo la programación con vs.net 2005 y oracle y tengo la siguiente sentencia: UPDATE USUARIOS SET NOMBRE=:NOMBRE, PASSWORD=:PASSWORD, TIPOUSUARIO=:TIPOUSUARIO, ...
  #1 (permalink)  
Antiguo 06/11/2007, 14:29
 
Fecha de Ingreso: septiembre-2005
Mensajes: 73
Antigüedad: 18 años, 7 meses
Puntos: 0
Problema con iF

Hola, una preguntota nada más.

Estoy haciendo la programación con vs.net 2005 y oracle y tengo la siguiente sentencia:

UPDATE USUARIOS SET NOMBRE=:NOMBRE,
PASSWORD=:PASSWORD,
TIPOUSUARIO=:TIPOUSUARIO,
TRABAJADORID=:TRABAJADORID
WHERE USUARIOID=:USUARIOID;
IF (:PASSWORDOLD<>:PASSWORD) THEN
UPDATE USUARIOS SET ULTIMOCAMBIO=:ULTIMOCAMBIO WHERE USUARIOID=:USUARIOID;
END IF;

Al realizar la consulta me da el error siguiente:

ORA-00900: invalid SQL statement
IF (:PASSWORDOLD<>:PASSWORD) THEN


Mi pregunta es la siguiente.
Se puede usar las expresiones IF así como lo estoy haciendo o sólo se puede usar dentro de funciones, procedimientos o cosas así.

De antemano gracias
__________________
Henry :-D
  #2 (permalink)  
Antiguo 06/11/2007, 14:37
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: Problema con iF

Muevo tu consulta a la sección correspondiente, o sea, Oracle.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 06/11/2007, 15:22
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Re: Problema con iF

Hola,

Se me ocurre.

Opcion 1: Hacer la pregunta del IF dentro del codigo .NET, si es TRUE hacer el update sobre la base de datos.

Opcion 2: Ejecutar en base de datos un pequeño bloque PL/SQL anonimo.

Yo iria por la primera opcion, asi te evitas un acceso a base de datos si es que la condicion es FALSE.

En respuesta a la pregunta, No, no puedes hacer un IF para decidir ejecutar una consulta o no, dentro de SQL directo.

Saludos

Última edición por matanga; 15/11/2007 a las 01:20 Razón: Se quita codigo de programacion, no corresponde al foro.
  #4 (permalink)  
Antiguo 08/11/2007, 14:29
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: Problema con iF

Puedes usar tambien un decode en la seccion del SET del UPDATE:

UPDATE USUARIOS SET NOMBRE=:NOMBRE,
PASSWORD=:PASSWORD,
TIPOUSUARIO=:TIPOUSUARIO,
TRABAJADORID=:TRABAJADORID,
ULTIMOCAMBIO = DECODE(:PASSWORD, :PASSWORDOLD, ULTIMOCAMBIO, :ULTIMOCAMBIO)
WHERE USUARIOID=:USUARIOID;

Si el pass nuevo es igual al pass viejo se actualiza sobre si mismo, sino hace el cambio por el valor contenido en :ultimocambio.

Sin mas,

Sldo Atte, Mario.
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 18:41.