Array
(
)

Dúvida com CURSOR e WHILE

Robertolucio
   - 21 fev 2005

Bom dia,

Para situar:

Tenho uma tabela de cadastro de clientes por empresa, com chave cod_empresa e cod_cliente. O cod_empresa é o código da empresa que cadastrou o cliente.

Tenho tbem uma tabela de vendas, com chave nro. sequencial e empresa da venda e eu referencio ao cliente usando cod_empresa do cliente e cod_cliente.

Sei que não está certo, pois posso cadastrar um mesmo cliente para mais de uma empresa e realizar vendas em empresas diferentes para um mesmo cliente.

Agora tenho que corrigir isso. Sei o que fazer, mas não sei qual é a melhor forma de fazê-lo.

Se eu usar um CURSOR o processo ficará muito lento, se eu uso um WHILE melhora um pouco a performance, mas mesmo assim fica lento demais.

Alguém tem alguma sugestão?

Sds
Roberto

Emerson
   - 21 fev 2005

um CURSOR numa Stored Procedure não deveria ficar lento. A lentidão pode ocorrer por conta de uma rotina não tão bem estruturada.

Primeiro é preciso conhecer um pouco da estrutura das suas tabelas como, por exemplo, se o CNPJ é de cadastramento obrigatório. Se sim, bastaria selecionar o cliente, dentre os CNPJs iguais, cuja data seja mais recente e provavelmente tem os dados atuais (com group by, por exemplo), atribuir um ID para esse cliente e alterar todas as referências para o mesmo CNPJ nas tabelas relacionadas.

Creio que o CURSOR seja a melhor forma de fazer isso.