update con decode ?????
Hola a todos. Mi problema es el siguiente (entre otros muchos, que no vienen ahora al caso):
Necesito hacer un update de un campo de una tabla. El rollo está en que el cambo a modificar varia según un determinado parámetro. Le tengo puesto un decode en el set del update, pero parece que no le gusta (No se si esto se puede hacer, pero es lo único que se me ocurre). El tipo de sentencia que uso es esta:
update tabla
set decode (:parameter.parametro, 1, codigo1,
2, codigo2, 3, codigo3) = valor ;
Si tenéis alguna sugerencia, no dudéis.
Gracias anticipadas.
Necesito hacer un update de un campo de una tabla. El rollo está en que el cambo a modificar varia según un determinado parámetro. Le tengo puesto un decode en el set del update, pero parece que no le gusta (No se si esto se puede hacer, pero es lo único que se me ocurre). El tipo de sentencia que uso es esta:
update tabla
set decode (:parameter.parametro, 1, codigo1,
2, codigo2, 3, codigo3) = valor ;
Si tenéis alguna sugerencia, no dudéis.
Gracias anticipadas.
Uhmmm... lo tienes al reves... es asi
update tabla set
codigo1 = decode(parametro, 1, valor, codigo1),
codigo2 = decode(parametro, 2, valor, codigo2),
codigo3 = decode(parametro, 3, valor, codigo3);
update tabla set
codigo1 = decode(parametro, 1, valor, codigo1),
codigo2 = decode(parametro, 2, valor, codigo2),
codigo3 = decode(parametro, 3, valor, codigo3);
Lo mejor es utilizar sql dimanico.
En un if le preguntas por el parametro y metes toda la sentencia en una cadena, con el campo correspondiente que quieres actualizar.
Despues simplemente utiliza el DBMS_SQL y ejecuta esa cadena que has montado.
Salu 2
En un if le preguntas por el parametro y metes toda la sentencia en una cadena, con el campo correspondiente que quieres actualizar.
Despues simplemente utiliza el DBMS_SQL y ejecuta esa cadena que has montado.
Salu 2
Supongo que definitivamente debes estar usando PL/SQL pues sino de donde sacarias "valor". Estoy en lo correcto? Si es así y estas en la versión 9i ya puedes usar el If:
BEGIN
IF valor='xxxxx'
UPDATE tabla SET......
ELSE
IF valor='zzzz'
UPDATE tabla SET.....
END IF;
END;
BEGIN
IF valor='xxxxx'
UPDATE tabla SET......
ELSE
IF valor='zzzz'
UPDATE tabla SET.....
END IF;
END;
Me olvide de ponerle el THEN.. al ejemplo:
IF .. THEN..... END IF
y ademas si deseas puedes usar el:
IF <condition1> THEN
<statements1>
ELSIF <condition2> THEN
<statements2>
ELSIF <conditionN> THEN
<statementsN>
END IF;
Espero que te ayude
IF .. THEN..... END IF
y ademas si deseas puedes usar el:
IF <condition1> THEN
<statements1>
ELSIF <condition2> THEN
<statements2>
ELSIF <conditionN> THEN
<statementsN>
END IF;
Espero que te ayude
Desconozco si puedes hacerlo en una sola consulta pero siempre la podrás dividir:
update tabla set codigo1 = valor where parametro = 1;
update tabla set codigo2 = valor where parametro = 2;
update tabla set codigo3 = valor where parametro = 3;
Si estas empleando PL podrías hacerlo con SQL dinámico.
Espero te ayude.
update tabla set codigo1 = valor where parametro = 1;
update tabla set codigo2 = valor where parametro = 2;
update tabla set codigo3 = valor where parametro = 3;
Si estas empleando PL podrías hacerlo con SQL dinámico.
Espero te ayude.
