Boa noite amigos estou com o pequeno problema aqui referente a uma proc que faz dias que tento fazer e nada o que acontece e que eu uso ela para filtrar os dados de uma tabela no mysql porem gostaria de filtrar tambem entre datas, porem nao consigo o codigo ele mesmo que nao digite nada ele traz todos os dados e colocando o parâmetro ele filtra também.
CREATE DEFINER=`root`@`%` PROCEDURE `sp_conta_relatorio`(
in p_idcandidato int
,in p_status varchar(10)
,in p_tipo varchar(10)
,in p_datainicio date
,in p_datafim date
)
BEGIN
SET @_where = NULL;
SET @sSQL =
'SELECT
tipo as ''Tipo''
,idconta as ''Id Conta''
,status as ''Status''
,candidato as ''Candidato''
,razao as ''Razao''
,datalancamento as ''Data Lancamento''
,datavencimento as ''Data Vencimento''
,valordebito as ''Valor Debito''
,datapago as ''Data Pago''
,idcandidato as ''Id Candidato''
,idcliente as ''Id Cliente''
,cliente as ''Cliente''
FROM tblcontas';
IF(p_idcandidato IS NOT NULL) THEN
SET @_where = CONCAT(' WHERE idcandidato =',p_idcandidato);
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
IF (p_status IS NOT NULL AND @_where IS NOT NULL) THEN
SET @_where = CONCAT(' AND status LIKE ','''%',p_status,'%''');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
IF (p_status IS NOT NULL AND @_where IS NULL) THEN
SET @_where = CONCAT(' WHERE status LIKE ','''%',p_status,'%''');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
IF (p_datainicio IS NOT NULL AND @_where IS NULL) and (p_datafim IS NOT NULL AND @_where IS NULL)THEN
SET @_where = CONCAT(' and datalancamento between ','''',p_datainicio,''''' and ','''',p_datafim,'''');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
PREPARE sSQL FROM @sSQL;
EXECUTE sSQL;
DEALLOCATE PREPARE sSQL;
END
tentei de varias formas to empacado nisso se alguém ai puder me ajudar agradeço.
CREATE DEFINER=`root`@`%` PROCEDURE `sp_conta_relatorio`(
in p_idcandidato int
,in p_status varchar(10)
,in p_tipo varchar(10)
,in p_datainicio date
,in p_datafim date
)
BEGIN
SET @_where = NULL;
SET @sSQL =
'SELECT
tipo as ''Tipo''
,idconta as ''Id Conta''
,status as ''Status''
,candidato as ''Candidato''
,razao as ''Razao''
,datalancamento as ''Data Lancamento''
,datavencimento as ''Data Vencimento''
,valordebito as ''Valor Debito''
,datapago as ''Data Pago''
,idcandidato as ''Id Candidato''
,idcliente as ''Id Cliente''
,cliente as ''Cliente''
FROM tblcontas';
IF(p_idcandidato IS NOT NULL) THEN
SET @_where = CONCAT(' WHERE idcandidato =',p_idcandidato);
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
IF (p_status IS NOT NULL AND @_where IS NOT NULL) THEN
SET @_where = CONCAT(' AND status LIKE ','''%',p_status,'%''');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
IF (p_status IS NOT NULL AND @_where IS NULL) THEN
SET @_where = CONCAT(' WHERE status LIKE ','''%',p_status,'%''');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
IF (p_datainicio IS NOT NULL AND @_where IS NULL) and (p_datafim IS NOT NULL AND @_where IS NULL)THEN
SET @_where = CONCAT(' and datalancamento between ','''',p_datainicio,''''' and ','''',p_datafim,'''');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
PREPARE sSQL FROM @sSQL;
EXECUTE sSQL;
DEALLOCATE PREPARE sSQL;
END
tentei de varias formas to empacado nisso se alguém ai puder me ajudar agradeço.