Comunidad de diseño web y desarrollo en internet online

Usar una variable de un procedure dentro de un LIKE en Mysql

Citar            
MensajeEscrito el 21 Ago 2008 08:25 am
Necesito usar una variable que se pasa por parametro en un storedprocedure dentro de un LIKE, el problema es que no se como se concatena en Mysql; en java es "+" en Vb es "&"; pero no se en Mysql si hay algun operador como ese. Buscando encontre esta liga y segun yo lo hice tal cual dicen alli:

Código :

DELIMITER $$

DROP PROCEDURE IF EXISTS `bdutandas`.`Prueba` $$
CREATE PROCEDURE `bdutandas`.`Prueba` (mesi integer,mesf integer,yearange integer,TipoCuenta varchar(20),estado integer)
BEGIN

 IF estado > 1 Then
   SELECT Cu.TipoCuenta,C.num_cliente As 'No. Cliente',Cu.num_cuenta As 'No. Cta',CAST(D.Fecha AS CHAR) AS Fecha,D.id_deposito As 'NO',D.monto As Depositado,CAST(IF(tipo_cuenta='Semanal',WEEK(NOW()),IF(tipo_cuenta='Quincenal',FLOOR(WEEK(NOW())/2),'Ninguna')) AS CHAR) As 'Periodo Actual',Sum(D.monto)/Cu.monto_abono As 'Periodos Acreditados' FROM depositos D INNER JOIN cuentas Cu ON Cu.id_cuentas=D.id_cuenta INNER JOIN Clientes C ON C.id_cliente=Cu.id_cliente WHERE D.registrado=1 AND MONTH(cu.fecha_inicio)>=mesi AND MONTH(cu.fecha_inicio)<=mesf AND YEAR(Cu.fecha_inicio)=yearange AND Cu.tipo_cuenta LIKE '"TipoCuenta"%' GROUP BY D.id_deposito;
 ELSE
   SELECT C.num_cliente As 'No. Cliente',Cu.num_cuenta As 'No. Cta',CAST(D.Fecha AS CHAR) AS Fecha,D.id_deposito As 'NO',D.monto As Depositado,CAST(IF(tipo_cuenta='Semanal',WEEK(NOW()),IF(tipo_cuenta='Quincenal',FLOOR(WEEK(NOW())/2),'Ninguna')) AS CHAR) As 'Periodo Actual',Sum(D.monto)/Cu.monto_abono As 'Periodos Acreditados' FROM depositos D INNER JOIN cuentas Cu ON Cu.id_cuentas=D.id_cuenta INNER JOIN Clientes C ON C.id_cliente=Cu.id_cliente WHERE D.registrado=1 AND MONTH(cu.fecha_inicio)>=mesi AND MONTH(cu.fecha_inicio)<=mesf AND YEAR(Cu.fecha_inicio)=yearange AND Cu.registrado=estado AND Cu.tipo_cuenta '"TipoCuenta"%' GROUP BY D.id_deposito;
 END IF;
END $$

DELIMITER;


No se en que me este equivocando porque al ejecutar la funcion no me regresa nada, pero si envez de usar la variable TipoCuenta dentro del LIKE pongo un tipo de cuenta directamente si me regresa resultados; osea que el problema es que dentro del like no consulta el contenido de la variable sino la palabra TipoCuenta :(

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 21 Ago 2008 02:28 pm
Siempre crei que Concat solo servia para unir los campos del SELECT, bueno cada dia se aprende algo nuevo:

Código :

DELIMITER $$

DROP PROCEDURE IF EXISTS `bdutandas`.`GetConcentrado` $$
CREATE PROCEDURE `bdutandas`.`GetConcentrado` (mesi integer,mesf integer,yearange integer,TipoCuenta varchar(20),estado integer)
BEGIN

 IF estado > 1 Then
   SELECT Cu.TipoCuenta,C.num_cliente As 'No. Cliente',Cu.num_cuenta As 'No. Cta',CAST(D.Fecha AS CHAR) AS Fecha,D.id_deposito As 'NO',D.monto As Depositado,CAST(IF(tipo_cuenta='Semanal',WEEK(NOW()),IF(tipo_cuenta='Quincenal',FLOOR(WEEK(NOW())/2),'Ninguna')) AS CHAR) As 'Periodo Actual',Sum(D.monto)/Cu.monto_abono As 'Periodos Acreditados' FROM depositos D INNER JOIN cuentas Cu ON Cu.id_cuentas=D.id_cuenta INNER JOIN Clientes C ON C.id_cliente=Cu.id_cliente WHERE D.registrado=1 AND MONTH(cu.fecha_inicio)>=mesi AND MONTH(cu.fecha_inicio)<=mesf AND YEAR(Cu.fecha_inicio)=yearange AND Cu.tipo_cuenta LIKE CONCAT("%",TipoCuenta,"%") GROUP BY D.id_deposito;
 ELSE
   SELECT C.num_cliente As 'No. Cliente',Cu.num_cuenta As 'No. Cta',CAST(D.Fecha AS CHAR) AS Fecha,D.id_deposito As 'NO',D.monto As Depositado,CAST(IF(tipo_cuenta='Semanal',WEEK(NOW()),IF(tipo_cuenta='Quincenal',FLOOR(WEEK(NOW())/2),'Ninguna')) AS CHAR) As 'Periodo Actual',Sum(D.monto)/Cu.monto_abono As 'Periodos Acreditados' FROM depositos D INNER JOIN cuentas Cu ON Cu.id_cuentas=D.id_cuenta INNER JOIN Clientes C ON C.id_cliente=Cu.id_cliente WHERE D.registrado=1 AND MONTH(cu.fecha_inicio)>=mesi AND MONTH(cu.fecha_inicio)<=mesf AND YEAR(Cu.fecha_inicio)=yearange AND Cu.registrado=estado AND Cu.tipo_cuenta LIKE CONCAT("%",TipoCuenta,"%") GROUP BY D.id_deposito;
 END IF;
END $$

DELIMITER;

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.