1
resposta

MISSING TABLE - RELATION DOES NOT EXIST

Prezados , A função abaixo fará parte de uma série de SCRIPTS que precisarei executar em sequência. Quando executada obtenho o retorno de RELATION DOES NOT EXIST Já testei o SCRIPT adicionando aspas simples e duplas, estou certo de que os SCHEMAS e nome de tabela estão corretos. Em tempo, o POSTGRES que precede já foi removido anteriormente e colocado novamente, enfim, não alterou o resultado da consulta.

Podem ajudar?

CREATE OR REPLACE FUNCTION desenvolvimento.atualizar_cliente_contato() RETURNS void AS
$$
BEGIN    
    UPDATE 
        postgres.desenvolvimento.contato
    SET
        postgres.contato.nm_cliente = postgres.CRM_Inteligencia.cad_cliente.nm_razao_social ,
        postgres.contato.email = postgres.CRM_Inteligencia.cad_cliente.ds_email,
        postgres.contato.cep = postgres.CRM_Inteligencia.cad_cliente.cd_cep,
        postgres.contato.logradouro = postgres.CRM_Inteligencia.cad_cliente.ds_logradouro,
        postgres.contato.numero = postgres."desenvolvimento".validar_numero_endereco(CRM_Inteligencia.cad_cliente.ds_numero),           
        postgres.contato.bairro = postgres.CRM_Inteligencia.cad_cliente.ds_bairro,
        postgres.contato.cidade = postgres.CRM_Inteligencia.cad_cliente.cd_municipio,
        postgres.contato.estado = postgres.CRM_Inteligencia.cad_cliente.cd_uf,
        postgres.contato.pais = postgres.CRM_Inteligencia.cad_cliente.nm_pais,
        postgres.contato.complemento = postgres.CRM_Inteligencia.cad_cliente.ds_complemento,           
        postgres.contato.cd_ativo = postgres."desenvolvimento".converter_bit_boolean(CRM_Inteligencia.cad_cliente.cd_ativo),           
        postgres.contato.limite_disp = postgres.CRM_Inteligencia.cad_cliente.vl_limite_disponivel,
        postgres.contato.limite_total = postgres.CRM_Inteligencia.cad_cliente.vl_limite_compra
        FROM
            postgres.CRM_Inteligencia.cad_cliente
            WHERE
            postgres.desenvolvimento.contato.cpf_cnpj = postgres.CRM_Inteligencia.cad_cliente.nr_cpf_cnpj;
END;        
$$ LANGUAGE plpgsql;
1 resposta

Oi, José, tudo bem?

Peço desculpas pela demora em te responder.

O erro recebido ocorreu porque a tabela contato foi utilizada para indicar as colunas após a cláusula SET. Como já indicamos essa tabela no comando UPDATE postgres.contato, não precisamos repetir postgres.contato em SET.

Além disso, não é necessário escrever o schema desenvolvimento com aspas duplas ao utilizar as funções validar_numero_endereco e converter_bit_boolean.

Assim, ao realizar as devidas alterações, chegamos no seguinte resultado:

CREATE OR REPLACE FUNCTION desenvolvimento.atualizar_cliente_contato() RETURNS void AS
$$
BEGIN    
    UPDATE 
        postgres.desenvolvimento.contato
    SET
        nm_cliente = postgres.CRM_Inteligencia.cad_cliente.nm_razao_social ,
        email = postgres.CRM_Inteligencia.cad_cliente.ds_email,
        cep = postgres.CRM_Inteligencia.cad_cliente.cd_cep,
        logradouro = postgres.CRM_Inteligencia.cad_cliente.ds_logradouro,
        numero = postgres.desenvolvimento.validar_numero_endereco(CRM_Inteligencia.cad_cliente.ds_numero),           
        bairro = postgres.CRM_Inteligencia.cad_cliente.ds_bairro,
        cidade = postgres.CRM_Inteligencia.cad_cliente.cd_municipio,
        estado = postgres.CRM_Inteligencia.cad_cliente.cd_uf,
        pais = postgres.CRM_Inteligencia.cad_cliente.nm_pais,
        complemento = postgres.CRM_Inteligencia.cad_cliente.ds_complemento,           
        cd_ativo = postgres.desenvolvimento.converter_bit_boolean(CRM_Inteligencia.cad_cliente.cd_ativo),           
        limite_disp = postgres.CRM_Inteligencia.cad_cliente.vl_limite_disponivel,
        limite_total = postgres.CRM_Inteligencia.cad_cliente.vl_limite_compra
        FROM
            postgres.CRM_Inteligencia.cad_cliente
            WHERE
            postgres.desenvolvimento.contato.cpf_cnpj = postgres.CRM_Inteligencia.cad_cliente.nr_cpf_cnpj;
END;        
$$ LANGUAGE plpgsql;

José, espero ter ajudado! Caso surjam dúvidas, fico à disposição.

Abraço.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!