ola pessoal estou com um probleminha aqui tenho um codigo que filtra dados porem estou tentando adaptar ele para filtra em parametros data inicial e datafinal porem sem sucesso a pesquisa e concatenada se alguém puder me da uma luz a fico muito grato. segue abaixo:
CREATE DEFINER=`root`@`%` PROCEDURE `sp_conta_relatorio`(
p_status varchar(20)
,p_idcandidato INT
,p_datainicio 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 AND @_where IS NOT NULL) THEN
SET @_where = CONCAT(' AND idcandidato LIKE ','''%',p_idcandidato,'%''');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
IF (p_idcandidato IS NOT NULL AND @_where IS NULL) THEN
SET @_where = CONCAT(' WHERE idcandidato LIKE ','''%',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) THEN
SET @_where = CONCAT(' WHERE datalancamento BETWEEN ,p_datainicio');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
PREPARE sSQL FROM @sSQL;
EXECUTE sSQL;
DEALLOCATE PREPARE sSQL;
Pergunta
marcelo3092
ola pessoal estou com um probleminha aqui tenho um codigo que filtra dados porem estou tentando adaptar ele para filtra em parametros data inicial e datafinal porem sem sucesso a pesquisa e concatenada se alguém puder me da uma luz a fico muito grato. segue abaixo:
CREATE DEFINER=`root`@`%` PROCEDURE `sp_conta_relatorio`(
p_status varchar(20)
,p_idcandidato INT
,p_datainicio 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 AND @_where IS NOT NULL) THEN
SET @_where = CONCAT(' AND idcandidato LIKE ','''%',p_idcandidato,'%''');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
IF (p_idcandidato IS NOT NULL AND @_where IS NULL) THEN
SET @_where = CONCAT(' WHERE idcandidato LIKE ','''%',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) THEN
SET @_where = CONCAT(' WHERE datalancamento BETWEEN ,p_datainicio');
SET @sSQL = CONCAT(@sSQL,@_where);
END IF;
PREPARE sSQL FROM @sSQL;
EXECUTE sSQL;
DEALLOCATE PREPARE sSQL;
END
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.