Comparar Variable con mas de un valor

 Buenas tardes...

 

Abro este post, para saber si alguien me puede ayudar a optimizar un codigo que me tiene con los pelos de punta..

Tengo un SP que valida formato de los numeros telefónicos.

Para validar dicho formato debo verificar los codigos de area local, por ejemplo---> 

IF pfx_o_vAREA IN ('032','041') THEN

etc.....

END IF

Hasta ahi todo bien....mi problema surge cuando quiero dejar en una sola variable 2 o mas codigos de area...y para esto recorro con un cursor que me trae los codigos de area y los voy concatenando en una variable, con lo cual el valor de la variable V_COD_AREA queda = '032','045','058','057' (por ejemplo, porque pueden ser mas codigos)

Entonces cuando reemplazo IF pfx_o_vAREA IN('032','041') por  IF pfx_o_vAREA IN(V_COD_AREA), no entra en el if si la variable pfx_o_vAREA viene con alguno de los valores anteriores, yo creo en mi ignorancia que compara con string completo?

probé dejando cada codigo de area en una variable diferente: IN(V_CODIGO1,V_CODIGO2, ETC.)  y ahí funcionó sin nigun problema...

 

Existe otra manera de optimizarlo para no tener 21 variables(21 codigos de areas telefonicas)?

 

De antemano gracias!!

 

Creo que la comparación no te funciona como esperas porque el operador IN espera una serie de valores, que pueden ser variables, pero no una variable que contenga la serie de valores.

Si trabajas con variables de cadena yo probaría utilizando otros operadores de comparación de cadenas como:

  1. Comparación con LIKE, concatenando '%' por delante y por detrás al valor de V_COD_AREA y comparando después este patrón con el contenido de la variable que contiene todos los códigos.
  2. Comparación con INSTR(V_COD_AREA,pfx_o_vAREA), que te devolverá 0 si el código de la variable no está en el string que contiene todos los códigos.

No he podido hacer ninguna prueba, así que ya comentarás si te funciona bien.