Dúvida com CURSOR e WHILE
21/02/2005
0
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
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
Robertolucio
Curtir tópico
+ 0
Responder
Posts
21/02/2005
Emerson Nascimento
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.
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)