Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

e-Renata

Concatenado palavras

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/hug.gif

 

Aê!

 

Como eu faço pra exibir numa tabela, o resultado de uma procedure PL/SQL onde vem: codigo BRA e denominação de uma espécie de uma planta qq (cuja espécie é dada como parâmetro)?

 

O resultado tem que vir linha por linha, sem repetição de códigos e com as tais descrições concatenadas com '; ' quando o BRA tiver mais de uma denominação.

 

Obrigada pela atenção de quem responder.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Faz o seguinte... truque de mágico:

 

select coluna1 || ';' || coluna2 || ';' || coluna 3 from tabela.

Acho que isso irá te ajudar.

 

Abraços,

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está errado... não é nada disso. :huh:

Deixa pra lá.

 

Olá,

 

Faz o seguinte... truque de mágico:

 

select coluna1 || ';' || coluna2 || ';' || coluna 3 from tabela.
Acho que isso irá te ajudar.

 

Abraços,

  http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi bem o que você quer , o retorno de uma função ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Semana passada, um colega aqui criou uma função para retornar essas descrições de cada código concatenadas, (atendeu a demanda do nosso chefe e teoricamente a esta minha, também) mas ela não funcionou no meu cursor PL/SQL.

 

Não sei se eu declarei os campos erradamente nela ou se ela não funciona mesmo dentro de cursores ...

 

a função é:

 

sibag_sys.hLeDetalhes(String key, String keyValue, String tableChild, String fieldConcat, String fieldSort, String separator)

 

e meu cursor é:

 

CURSOR CUR_ACESSO IS

SELECT DISTINCT TAX.TAXON, IV.IVP, IV.IVNO, IV.IVS, AN.SEARCHID

FROM TAX, IV, AN

WHERE (UPPER(TAX.TAXON) LIKE UPPER(PTAXON) || '%')

AND IV.TAXNO = TAX.TAXNO

AND IV.ACID = AN.ACID

ORDER BY IVP, IVNO, IVS, SEARCHID;

 

onde:

 

- O "código BRA" ao qual me refiro é formado pelos 3 campos: IVP, IVNO e IVS (nesta ordem) formatado para sair da seguinte maneira:

 

HTP.TABLEDATA ('<FONT COLOR = "BLACK" FACE = "ARIAL" SIZE = "2" >' || REG_AC.IVP || '-' || LTRIM(TO_CHAR(REG_AC.IVNO,'000009')) || '-' || REG_AC.IVS || '</FONT>');

 

As "denominações" estão no campo: AN.SEARCHID da tabela AN.

 

O resultado da minha consulta deve ser uma tabela em PL/SQL (com tableopen, tablerowopen, tabledata, tablerowclose, tableclose) onde veremos: para cada linha, os códigos BRA e denominações (concatenadas na mesma linha do respectivo código) de uma dada espécie de planta ou fruta ou legume inserida (escolhida) pelo usuario.

 

Grata a quem puder me ajudar.

 

Eu não entendi bem o que você quer , o retorno de uma função ?

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que retorna sibag_sys.hLeDetalhes ?

 

pq você não faz referencia a sibag_sys.hLeDetalhes no seu cursor ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É pra retornar a linha de resultado:---------------------------------------------------------------------------------------|BRA-999999-00 | denominação_1; denominação_2; denominação_3 |---------------------------------------------------------------------------------------e assim por diante, pra cada BRA que aparecer...Não a referencio no cursor porque o compilador Oracle 8.0 não a aceita dentro dele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho funcoes que me retornam string baseado em select , concat , etc.

 

Elas podem ser usadas em sql sem nenhum problema, apenas as que retornam tipos criados pelo usuário nao são tratadas por algumas linguagens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Já resolvi o problema, sem precisar colocar o código de concatenação numa função.

Assim:

 

1) Declared local variables to get the data I'll use

 

2) Declared 2 cursors to refer and process the data (one to the code, other to the descriptions it may have)

 

3) Opened the first cursor outside the first loop (code) and the other outside the second loop (descriptions), I mean: at this time I thought about writing a nested loop to process the descriptions for each code

 

4) Implemented the nested loop and exhibited the result in a PL/SQL formated table

 

No need of functions nor much more hours of hard work...

Piece of cake!! ; )

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.