[firebase-br] Retornar apenas um registro
HPensador
helio.oliveira em as.unifacs.br
Sex Set 21 11:23:10 -03 2007
Bom dia Colegas!
Para gerar um relatório um tanto complexo tive que fazer uma SP, só que
a mesma está retornando 3 registros ao invés de apenas 1 (explico - há
um relacionamento entre a tabela de propostas e proposta_sistema e no
momento que executo a SP a tabela de proposta_sistema tem 3 registro
que refere-se a proposta número 1) - e não consegui fazer com que a
minha SP em questão me retornasse apenas um registro - abaixo esta a SP
para ver se algum colega pode me dar alguma ideia de como fazer isto.
Sds, HPensador
CREATE PROCEDURE REL_PROPOSTA (
pro_numero integer)
returns (
pro_per_inicio date,
pro_per_fim date,
pro_valor numeric(15,4),
pro_valor_implantacao numeric(15,4),
pro_cliente varchar(50),
pro_sistema0 varchar(50),
pro_sistema1 varchar(50),
pro_sistema2 varchar(50),
pro_sistema3 varchar(50),
pro_sistema4 varchar(50),
pro_sistema5 varchar(50),
pro_sistema6 varchar(50),
pro_sistema7 varchar(50),
pro_sistema8 varchar(50),
pro_sistema9 varchar(50))
as
declare variable pro_sistema varchar(50);
begin
select p.per_inicio,
p.per_fim,
p.valor,
p.valor_implatacao,
c.nome
from proposta p
join cliente c on (c.cod_cliente = p.cod_cliente)
where p.numero = :pro_numero
into :pro_per_inicio, :pro_per_fim, :pro_valor,
:pro_valor_implantacao, :pro_cliente;
--Selecionando o(s) sistema(s) da proposta
pro_sistema0 = '';
pro_sistema1 = '';
pro_sistema2 = '';
pro_sistema3 = '';
pro_sistema4 = '';
pro_sistema5 = '';
pro_sistema6 = '';
pro_sistema7 = '';
pro_sistema8 = '';
pro_sistema9 = '';
for select s.descricao
from proposta_sistema ps
join proposta x on (x.numero = :pro_numero)
join sistema s on (s.cod_sistema = ps.cod_sistema)
into :pro_sistema
do
begin
if (:pro_sistema0 = '') then
pro_sistema0 = :pro_sistema;
else
if (:pro_sistema1 = '') then
pro_sistema1 = :pro_sistema;
else
if (:pro_sistema2 = '') then
pro_sistema2 = :pro_sistema;
else
if (:pro_sistema3 = '') then
pro_sistema3 = :pro_sistema;
else
if (:pro_sistema4 = '') then
pro_sistema4 = :pro_sistema;
else
if (:pro_sistema5 = '') then
pro_sistema5= :pro_sistema;
else
if (:pro_sistema6 = '') then
pro_sistema6 = :pro_sistema;
else
if (:pro_sistema7 = '') then
pro_sistema7 = :pro_sistema;
else
if (:pro_sistema8 = '') then
pro_sistema8 = :pro_sistema;
else
if (:pro_sistema9 = '') then
pro_sistema9 = :pro_sistema;
suspend;
end
end
--
Mais detalhes sobre a lista de discussão lista