[firebase-br] RES: RES: RES: RES: Otimizar Where
Magno System
magno em speet.com.br
Ter Dez 20 13:21:45 -03 2011
Sim, mas daí são dois select's que o FIREBIRD terá que fazer internamente na
PROCEDURE.
Software House Magno System
Site: www.magnosystem.com.br
Email: magno em speet.com.br
Tel.: (35)3371-2337 / (35) 9129-7634
----- Original Message -----
From: "Felix - Sol Informática" <felix em soltecnologia.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Tuesday, December 20, 2011 11:31 AM
Subject: [firebase-br] RES: RES: RES: RES: Otimizar Where
Resolvido com procedure (mas dá no mesmo fazendo na aplicação, ou seja,
executar o segundo select somente quando o primeiro não localizar):
SET TERM ^ ;
CREATE PROCEDURE SELECT_VEICULO (PTEXTO Varchar(50) )
RETURNS (
XPLACA Char(7),
XAUTOMOVEL Varchar(50),
XPROPRIETARIO Varchar(50) )
AS
DECLARE VARIABLE YPLACA Char(7);
DECLARE VARIABLE YAUTOMOVEL Varchar(50);
DECLARE VARIABLE YPROPRIETARIO Varchar(50);
BEGIN
yPlaca = '';
yAutomovel = '';
yProprietario = '';
select all veiculo.placa, veiculo.AUTOMOVEL, cadastro.nome
from veiculo inner join cadastro on veiculo.cb = cadastro.CB
where veiculo.placa = :ptexto
into :yPlaca, :yAutomovel, :yProprietario;
if (yPlaca = '') then
begin
for
select all veiculo.placa, veiculo.AUTOMOVEL, cadastro.nome
from veiculo inner join cadastro on veiculo.cb = cadastro.CB
where veiculo.AUTOMOVEL containing :ptexto or cadastro.nome
containing :ptexto
into :xPlaca, :xAutomovel, :xProprietario
do
suspend;
end
else
begin
xPlaca = yPlaca;
xAutomovel = yAutomovel;
xProprietario = yProprietario;
suspend;
end
END^
Chamada da procedure como no exemplo:
SELECT p.XPLACA, p.XAUTOMOVEL, p.XPROPRIETARIO FROM SELECT_VEICULO('FELIX')
p
Poderá me retornar 1 só registro (achou exatamente a placa OU apenas 1
registro satisfazia a condição da busca pelo nome do veículo ou do
proprietário) ou vários (não achou a placa, o texto informado é compatível
com vários automóveis / proprietários).
Daí basta colocar na aplicação a janela de seleção do registro quando houver
um retorno múltiplo.
Fco. Felix
www.soltecnologia.com.br
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista