Pessoal boa tarde, eu sei que tem o concat, so que para o que eu preciso ele não funciona... preciso contatenar strings que vem de um resultado de um loop do cursos, so que não funciona ex:
SCODUMA = SCODUMA +' - '+ SCODUMA1;
Concatenar uma string
-
- Rank: Analista Júnior
- Mensagens: 98
- Registrado em: Qua, 24 Set 2008 11:00 pm
- Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate
OCA Oracle PL/SQL Developer Certified Associate
é eu vi aqui, Notifero so que estou com um outro erro aqui, montei uma função com cursor e tal, so que não esta concatenando so esta pegando o ultimo valor
CREATE OR REPLACE FUNCTION GETUMAORIAPA(PIDCORDSVC IN VARCHAR2,PVLRNROSEQATV IN VARCHAR2,PVLRNUMSEQSVC IN VARCHAR2,PNROITMORDSVC IN VARCHAR2)
RETURN VARCHAR2
AS
CURSOR C_CODUMA IS
SELECT LPAD (UMA.CODUMA,20,0) CODUMA
FROM WMS_MOVRSVESQEND RSV
INNER JOIN WMS_MOVMTGVOL MTG ON MTG.IDCMOVRSVESQEND = RSV.IDCMOVRSVESQEND
INNER JOIN WMS_RELMTGVOLORDSVC REL ON MTG.IDCMOVMTGVOL = REL.IDCMOVMTGVOL
INNER JOIN WMS_RELMTGORDMOVESQ RELTMP ON RELTMP.IDCMTGVOLORDSVC = REL.IDCMTGVOLORDSVC
INNER JOIN WMS_MOVESQUMA MOV ON MOV.IDCMOVESQUMA = RELTMP.IDCMOVESQUMA
INNER JOIN WMS_CADUMA UMA ON UMA.IDCUMA = MOV.IDCUMA
WHERE REL.IDCORDSVC = PIDCORDSVC
AND REL.VLRNROSEQATV = PVLRNROSEQATV
AND REL.VLRNUMSEQSVC = PVLRNUMSEQSVC
AND REL.NROITMORDSVC = PNROITMORDSVC
ORDER BY CODUMA;
D_CODUMA C_CODUMA%ROWTYPE;
S_CODUMA VARCHAR2(20000);
Begin
OPEN C_CODUMA;
FETCH C_CODUMA
INTO S_CODUMA;
WHILE (C_CODUMA%FOUND)
LOOP
S_CODUMA := S_CODUMA || D_CODUMA.CODUMA || ' - ';
FETCH C_CODUMA
INTO S_CODUMA;
END LOOP;
CLOSE C_CODUMA;
S_CODUMA := SUBSTR (S_CODUMA, 0, LENGTH (S_CODUMA) - 2);
RETURN S_CODUMA;
EXCEPTION
WHEN OTHERS
THEN
IF C_CODUMA%ISOPEN
THEN
CLOSE C_CODUMA;
END IF;
raise_application_error (-20100, 'FALHA NA FUNCAO GETUMAORIAPA.');
End;
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Cara, você ta fazendo uma confusão danada.
Primeiro você criou duas variáveis para receber o cursor, onde precisa de apenas 1:
Ao associar, você associou apenas a "S_CODUMA":
Depois tentar ficar concatenando com:
Porém "D_CODUMA" nunca foi atribuído um valor. Apenas "S_CODUMA" fica recebendo sempre o ultimo valor do select, e como você concatena ele com "D_CODUMA" (e este não recebe nada), então você sempre só terá o último valor.
Você ainda depois dessa concatenação fez, inexplicavelmente:
Enxuta isso aí, deixa uma variável só para o cursor e um para concatenação que vai funcionar.
Primeiro você criou duas variáveis para receber o cursor, onde precisa de apenas 1:
D_CODUMA C_CODUMA%ROWTYPE;
S_CODUMA VARCHAR2(20000);
FETCH C_CODUMA
INTO S_CODUMA;
S_CODUMA := S_CODUMA || D_CODUMA.CODUMA || ' - ';
Você ainda depois dessa concatenação fez, inexplicavelmente:
FETCH C_CODUMA
INTO S_CODUMA;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes