Forum Pplware

Versão Completa: Insert de variável em tabela - PL SQL dúvida
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Olá!

Tenho o seguinte procedimento:

Código:
CREATE OR REPLACE PROCEDURE PICAGE."SP_AGE_SEM_GEST" (
p_procedure OUT VARCHAR2,
p_periodo_calc IN NUMBER := 201006001)
IS
v VARCHAR2 (32766);

CURSOR ent_vend
IS
SELECT DISTINCT ent_com.cod_ent_vend
FROM tbl_ref_funcao func, tbl_conf_hier_comercial_teste hier INNER JOIN tbl_conf_ent_comercial_teste ent_com
ON ( hier.id_conf_ent_comercial = ent_com.id_conf_ent_comercial
AND hier.id_conf_cal_periodo_calc =
ent_com.id_conf_cal_periodo_calc
)
LEFT OUTER JOIN tbl_conf_hier_comercial_teste hier1
ON ( hier.id_conf_ent_comercial_pai =
hier1.id_conf_ent_comercial
AND hier.id_conf_cal_periodo_calc =
hier1.id_conf_cal_periodo_calc
)
WHERE hier.id_ref_canal = 1
AND hier.id_ref_funcao = 6
AND hier.id_conf_cal_periodo_calc = 201006001
AND hier1.id_ref_funcao <> 3;
BEGIN
FOR ev IN ent_vend
LOOP
v := v || ev.cod_ent_vend || ',';
END LOOP;

p_procedure := 'Entidade de Venda = ' || v;
DBMS_OUTPUT.put_line (p_procedure);
END sp_age_sem_gest;


Que efectua uma query, guarda na variável os valores obtidos separados por 'virgula'.

Agora preciso ter outro procedimento que receba o valor da variável (p_procedure) e faça insert numa tabela, mas coloque um registo por linha da tabela e não todos os registos na mesma linha.

Podem ajudar-me???

Obrigada
Depois de leres o campo.
Um ciclo que faça o substr do campo até à próxima virgula e guarda numa variavel.
A condição de fim de ciclo será chegares à última virgula ou não teres mais campos para ler.
Depois disso, meter as variaveis nos vários campos da tabela.

para pesquisares continuamente por virgulas, será guardar para uma variavel sempre o resultado de substr(Mensagem, 0,instr(Mensagem,',')) isto dá-te sempre tudo até à proxima virgula.
claro que convem testar primeiro se existe uma proxima virgula, que mais não é do que testar se o instr te devolve zero ou não.

Se trabalhares de forma mais "astuta" também podes fazer o ciclo só a perguntar À "Mensagem" quantas virgulas tem e em que posição (ciclo de instr) e depois de uma assentada fazeres os substring todos...

Para veres as funções que tens para jogar a nível de manipulaçao de strings, dá uma olhada neste site
Então? Ficaste safo?
URL's de Referência