Usuário com melhor resposta
Stored Procedure

Pergunta
-
Opa pessoal,
tenho esta stored procedure no firebird, quero levar para SQL so que nao ta rolando...
create procedure SP_RETORNA_TELEFONES_AGREGADO (
QTD_TELEFONES integer,
CODIGOAGREGADO numeric(18,0))
returns (
R_TELEFONES varchar(200))
as
declare variable TELEFONES varchar(200);
declare variable I integer;
begin
TELEFONES = '';
I = 0;
for select substring(T.DESCRICAOTIPOFONE from 1 for 3) || ': ' || coalesce('(' || F.DDD || ')', '') || F.TELEFONE
from FONEAGREGADO F
join TIPOFONE T on (T.CODIGOTIPOFONE = F.CODIGOTIPOFONE)
where F.CODIGOAGREGADO = :CODIGOAGREGADO and
((F.CODIGOTIPOFONE < 6 and
F.CORRESPONDENCIA = 1) or (not exists(select 1
from FONEAGREGADO
where CODIGOAGREGADO = F.CODIGOAGREGADO and
CORRESPONDENCIA = 1 and
CODIGOTIPOFONE < 6)) and
F.CODIGOTIPOFONE < 6)
order by F.CODIGOTIPOFONE desc, F.ITEMFONE
into R_TELEFONES
do
begin
if (R_TELEFONES is not null) then
begin
if (I < :QTD_TELEFONES) then
begin
if (trim(TELEFONES) = '') then
begin
TELEFONES = TELEFONES || R_TELEFONES;
end
else
begin
TELEFONES = TELEFONES || ' / ' || R_TELEFONES;
end
I = I + 1;
end
R_TELEFONES = TELEFONES;
end
end
suspend;
end
Ajuda!!
Vlw
Fernando
Respostas
-
Boa noite,
burga1, não sei se entendi corretamente a sua procedure mas segue uma sugestão para testes:
create procedure PROC_RETORNA_TELEFONES_AGREGADO QTD_TELEFONES integer, CODIGOAGREGADO numeric(18,0), R_TELEFONES varchar(200) output as begin set @R_TELEFONES = STUFF ((select top(@QTD_TELEFONES) ' / ' + substring(T.DESCRICAOTIPOFONE, 1, 3) + ': ' + coalesce('(' + F.DDD + ')', '') + F.TELEFONE from FONEAGREGADO F inner join TIPOFONE T on T.CODIGOTIPOFONE = F.CODIGOTIPOFONE where F.CODIGOAGREGADO = @CODIGOAGREGADO and F.CODIGOTIPOFONE < 6 and ((F.CORRESPONDENCIA = 1) or (not exists (select 1 from FONEAGREGADO S where S.CODIGOAGREGADO = F.CODIGOAGREGADO and S.CORRESPONDENCIA = 1 and S.CODIGOTIPOFONE < 6))) order by F.CODIGOTIPOFONE desc, F.ITEMFONE FOR XML PATH(''), TYPE).value('.', 'varchar(200)'), 1, 3, ''); end
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 11 de setembro de 2018 17:41
Todas as Respostas
-
Boa noite,
burga1, não sei se entendi corretamente a sua procedure mas segue uma sugestão para testes:
create procedure PROC_RETORNA_TELEFONES_AGREGADO QTD_TELEFONES integer, CODIGOAGREGADO numeric(18,0), R_TELEFONES varchar(200) output as begin set @R_TELEFONES = STUFF ((select top(@QTD_TELEFONES) ' / ' + substring(T.DESCRICAOTIPOFONE, 1, 3) + ': ' + coalesce('(' + F.DDD + ')', '') + F.TELEFONE from FONEAGREGADO F inner join TIPOFONE T on T.CODIGOTIPOFONE = F.CODIGOTIPOFONE where F.CODIGOAGREGADO = @CODIGOAGREGADO and F.CODIGOTIPOFONE < 6 and ((F.CORRESPONDENCIA = 1) or (not exists (select 1 from FONEAGREGADO S where S.CODIGOAGREGADO = F.CODIGOAGREGADO and S.CORRESPONDENCIA = 1 and S.CODIGOTIPOFONE < 6))) order by F.CODIGOTIPOFONE desc, F.ITEMFONE FOR XML PATH(''), TYPE).value('.', 'varchar(200)'), 1, 3, ''); end
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 11 de setembro de 2018 17:41
-