erro de escapde em procedure postgres

12/01/2011

0

Tenho uma procedure para inserção de ceps no meu banco porem os dados chegam para mim em maiuscula por exemplo


pais= Brasil 

o que gera um erro na hora de inserir esses dados

como posso colocar dentro da procedure os dados no seguinte formato

nomepais='Brasil' se para iniciar a procedure depois do declare tem que colocar ' quando tento dar insert no banco me retorna esse erro

NOTA:  Criado novo pais


ERRO:  faltando entrada para tabela "endereco" na cláusula FROM
LINE 1: ...NSERT INTO endereco.pais(id, nome)VALUES (nextval(endereco.c...
                                                             ^
QUERY:  INSERT INTO endereco.pais(id, nome)VALUES (nextval(endereco.cep_sequence),  $1 )
CONTEXT:  PL/pgSQL function "inserecep" line 38 at SQL statement

********** Error **********

ERRO: faltando entrada para tabela "endereco" na cláusula FROM
SQL state: 42P01
Context: PL/pgSQL function "inserecep" line 38 at SQL statement
        


segue o codigo da procedurte até o trecho que da o erro                                                



CREATE OR REPLACE FUNCTION insereCep(char(9000),char(9000),char(9000),char(9000),char(9000),char(9000),char(9000),char(9000),char(9000)) RETURNS INTEGER AS 
'
declare 
    --contadores dos dados    
    npais integer;
    nestado integer;
    ncidade integer;
    nbairro integer;
    ncep integer;
    nlogradouro integer;

    --ids para inserir o cep
    id_pais integer;
    id_estado integer;
    id_cidade integer;
    id_bairro integer;
    id_logradouro integer;
    
    --variaveis de entrada para o cep 
    nome_pais ALIAS FOR $1; 
    nome_estado ALIAS FOR $2;
    siglaestado ALIAS FOR $3;
    nome_bairro ALIAS FOR $4;
    nome_cidade ALIAS FOR $5;    
    nomerua ALIAS FOR $6;
    cepcod ALIAS FOR $7;
    complemento_cep ALIAS FOR $8;
    tplogradouro ALIAS FOR $9;


        BEGIN
        
        --verifica se om pais colocado existe
            npais:= (select count(*) from endereco.pais where nome=nome_pais);
            
            IF npais=0 THEN
                --se 0 paises com esse nome insere o pais aqui
                 RAISE NOTICE E''Criado novo pais'';
                  --local do erro 
                INSERT INTO endereco.pais(id, nome)VALUES (nextval(endereco.cep_sequence), nome_pais);
...




entrada para o erro
select insereCep('brasil','acre','ac',          'rio branco','sobral','20 de novembro','69903-695','cj boa união','rua');


ela deveria ficar assim a sql

select count(*) from endereco.pais where nome='Brasil'



COMO FAÇO ISSO

DESDE JA OBRIGADO
Cristiano Borges

Cristiano Borges

Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar