Primero: Respira. Cálmate al escribir, y por sobre todo, no te olvides de los puntos y puntos aparte. Estás escribiendo como desesperada y resulta difícil entender lo que dices.
Segundo, existen innumerables ejemplos en la web, pero lo primero que deberías leer sería el manual de referencia (no entiendo por que a nadie parece ocurrírsele algo tan simple como eso)...
Si lo lees, verás que la sintaxis del IF es otra, y también verás que no puedes hacer asignaciones con eso, porque SET no es cláusula de la función:
Cita: IF(expr1, expr2, expr3)
Si expr1 es TRUE (expr1 <> 0 and expr1 <> NULL) entonces IF() retorna expr2; de otro modo retorna expr3. IF() retorna un valor numérico o cadena de caracteres, en función del contexto en que se usa.
Si sólo una de expr2 o expr3 es explícitamente NULL, el tipo del resultado de la función IF() es el mismo tipo que la expresión no NULL .
El bloque de expr1 puede ser cualquier conjunto de condiciones lógicas, siempre que tenga por resultado o TRUE o FALSE. Incluso admite el uso de otras funciones adentro, en tanto sean de una condición tal.
En esencia, puedes usarlo para hacer algo como.
Código MySQL:
Ver originalSET variable
= IF( valor
IN(valor1
, valor2
, valor3
), siTrue
, siFalse
);
Ahora bien, en referencia a los primeros posts, desde ya te digo, que tal como lo describes, la SF que pueda hacer eso requeriría, no demasiadas líneas, y usaría un codigo muchísimo más simple que el que escribiste.
Es decir, si, hay modos mejores de lograrlo.
Cita: no esta bien ese algoritmo, el agoritmo ya lo corregi ahora ya lo tengo bien
Algoritmos tienen los lenguajes de programación, no el SQL. En SQL no hablamos de algoritmos, ni siquiera con el PL/SQL, sino de
sintaxis de consultas,
optimización, y otros términos, pero no
algoritmo.
De hecho, los algoritmos del motor de BBDD son inaccesibles a los programadores, porque están en el kernel del DBMS.