Diego

Uma dúvida: a tabela de destino começa vazia? É certeza que não tem
registros "a frente" (PK) da tabela de origem?

Para matar o problema, você vai ter de "debugar"... seja através de uma boa
IDE, ou através de saída dbms_output. Na exibição, coloque o valor do campo
PK que está tentando inserir no destino.

Uma curiosidade (mas não diretamente relacionada ao problema): aquele
update feito através de EXECUTE IMMEDIATE poderia ser "direto", não é? (não
precisaria ser SQL dinâmico)

[ ]

André




Em 14 de julho de 2014 08:04, Diego Elias diego.u...@gmail.com [oracle_br] <
oracle_br@yahoogrupos.com.br> escreveu:

>
>
> André,
>
> É formado apenas por um campo sequencial que vem diretamente da tabela do
> sistema transacional, onde também é PK.
>
> Att,
> Diego Elias
>
>
> Em 11 de julho de 2014 16:10, Andre Santos andre.psantos...@gmail.com
> [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu:
>
>
>>
>> Diego
>>
>> E como é a PK da tabela de destino? (colunas da PK)
>>
>> [ ]
>>
>> André
>>
>>
>>
>> Em 11 de julho de 2014 15:13, Diego Elias diego.u...@gmail.com
>> [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu:
>>
>>
>>>
>>> Olá André,
>>>
>>> O erro de violação de PK ocorre na tabela de destino, que recebe a carga.
>>>
>>> Att,
>>> Diego Elias
>>>
>>>
>>>  Em 11 de julho de 2014 14:38, Andre Santos andre.psantos...@gmail.com
>>> [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu:
>>>
>>>
>>>>
>>>> Diego
>>>>
>>>> E o erro de PK ocorre na tabela de origem (que sofre o Update) ou na de
>>>> destino (que recebe a carga)?
>>>>
>>>> [ ]
>>>>
>>>> André
>>>>
>>>>
>>>> Em 11 de julho de 2014 10:23, Diego Elias diego.u...@gmail.com
>>>> [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu:
>>>>
>>>>>
>>>>>
>>>>> Olá Chiappa,
>>>>>
>>>>> Primeiramente agradeço a ajuda.
>>>>> Estou evitando colocar códigos, devido ao tamanho e para não fugir
>>>>> muito do problema.
>>>>>
>>>>> Mas para facilitar, segue o código simplificado da rotina.
>>>>>
>>>>> CREATE OR REPLACE PROCEDURE SP_PROCEDURE (pANO VARCHAR2)
>>>>> IS
>>>>>    vUpdate    VARCHAR2 (4000);
>>>>>    vRetorno   NUMBER := 0;
>>>>> BEGIN
>>>>>    FOR x IN 1 .. 12
>>>>>    LOOP
>>>>>       vUpdate :=
>>>>>          'BEGIN UPDATE SCHEMA_B.CONTROLE SET DTC_REFERENCIA =
>>>>> TO_DATE(''01/'
>>>>>          || x
>>>>>          || '/'
>>>>>          || pANO
>>>>>          || ''',''DD/MM/YYYY'');'
>>>>>          || ' COMMIT;'
>>>>>          || ' END;';
>>>>>
>>>>>       EXECUTE IMMEDIATE vUpdate;
>>>>>
>>>>>       vRetorno := SCHEMA_A.SP_CARGA_TABELA;  -- Dentro dessa procedure
>>>>> é utilizada a DTC_REFERENCIA da tabela CONTROLE do SCHEMA B
>>>>>
>>>>>       COMMIT;
>>>>>    END LOOP;
>>>>> END;
>>>>>
>>>>> O problema deve está aqui, pois, como falei, se de forma "grotesca" eu
>>>>> alterar o código 12 vezes para:
>>>>>
>>>>> For x IN 1..1
>>>>> For x IN 2..2
>>>>> For x IN 3..3
>>>>> ...
>>>>> For x IN 12..12
>>>>>
>>>>> ... ele funciona perfeitamente.
>>>>>
>>>>> Espero ter ficado mais claro agora.
>>>>>
>>>>> Obrigado!
>>>>>
>>>>>
>>>>>
>>>>> Em 10 de julho de 2014 18:07, jlchia...@yahoo.com.br [oracle_br] <
>>>>> oracle_br@yahoogrupos.com.br> escreveu:
>>>>>
>>>>>
>>>>>>
>>>>>> Pelo jeito , vc está esquecendo uma das ** OBVIEDADES ** no RDBMS
>>>>>> Oracle, que é : absolutamente ** nunca ** há leitura "suja", ie, dados
>>>>>> inseridos/updateados numa sessão NUNCA são lidos/disponibilizados para
>>>>>> outra - a informação só vai poder ser acessada por outras
>>>>>> sessões/transações QUANDO houver o COMMIT... Estou Supondo que por qquer
>>>>>> motivo vc tem uma sessão atendendo ao DML do schema A e outra atendendo 
>>>>>> ao
>>>>>> DML do schema B...
>>>>>>  Mas plz, pra podermos confirmar nos DÊ um CREATE TABLE e uns INSERTs
>>>>>> pra popular as tabelas , E uma versão hiper-curta , de meia dúzia de
>>>>>> linhas, da tal "rotina de carga" , E um print-screeen da execução dum 
>>>>>> bloco
>>>>>> Pl/SQl que chame a tal rotina e faça o loop desejado NO SQLPLUS, para
>>>>>> podermos entender melhor e tentar reproduzir a sua questão...
>>>>>>
>>>>>>  []s
>>>>>>
>>>>>>    Chiappa
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Diego Elias
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Diego Elias
>>>
>>>
>>
>
>
> --
> Diego Elias
>
>  
>
  • [oracle_br] Problema F... Diego Elias diego.u...@gmail.com [oracle_br]
    • [oracle_br] Re: P... jlchia...@yahoo.com.br [oracle_br]
      • Re: [oracle_b... Diego Elias diego.u...@gmail.com [oracle_br]
        • Re: [orac... jlchia...@yahoo.com.br [oracle_br]
        • Re: [orac... Andre Santos andre.psantos...@gmail.com [oracle_br]
          • Re: [... Diego Elias diego.u...@gmail.com [oracle_br]
            • ... Andre Santos andre.psantos...@gmail.com [oracle_br]
              • ... Diego Elias diego.u...@gmail.com [oracle_br]
                • ... Andre Santos andre.psantos...@gmail.com [oracle_br]
                • ... Diego Elias diego.u...@gmail.com [oracle_br]

Responder a