Ver Mensaje Individual
  #1  
Antiguo 16-04-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Reputación: 21
Gydba Va por buen camino
Parametros opcionales en SELECTs

Buena, buenas.

Paso a comentar rapidamente un problema que estoy teniendo:

Tengo una especie de wizard para permiten parametrizar determinadas consultas. El tema es que el usuario puede o no definir los valores para los parámetros, es decir el usuario bien podría darle un valor determinado o dejarlo simplemente en nulo y la consulta ignorará el filtrado.

Hasta aca todo parece simple. Las consultas se guardan en una tabla de la BD por lo que no se deberían armar dinamicamente y otros detalles que no vienen al caso.

Mi problema es el siguiente, hasta el momento yo utilizaba una SP para chequear que el valor pasado no sea nulo y en caso contrario continuaba con un OR dentro del WHERE, pero por diversos problemas no podemos seguir utilizando esto. Creo que la estoy complicando

Bueno llendo al punto con algo simple:
Código:
SELECT
    CLT.ID, CLT.NAME
FROM
    CLT_MASTER CLT
WHERE
    (COALESCE(:PARAM, -1) = -1) OR CLT.ID = :PARAM
    AND
    (COALESCE(:PARAM2, '') = '') OR CLT.NAME = :PARAM2
En el caso de PARAM anda 10 puntos al ser un tipo entero, pero en PARAM2 que es un varchar(60) me tira un error del tipo:
Código:

Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
arithmetic exception, numeric overflow, or string truncation.


Tengo que aclarar que ya intente un par de "CASTs" pero me sigue tirando errores.
¿A alguien le pasa algo similar?
¿Cómo reconoce FB el tipo de parámetro que se le pasa?

Saben que desde ya les doy las gracias

PD: Las pruebas fueron realizadas con FB1.5 e IBExpert PE
__________________
Suerte
.: Gydba :.
Responder Con Cita