Em 19-06-2012 13:40, Glauco Torres escreveu:
> Boa Tarde Pessoal,
>
> Criamos uma FUNCTION com o seguinte código:
>
> CREATE OR REPLACE FUNCTION public.atualizar_cbo (
> "piFamilia" integer = 0,
> "piCBO" integer = 0,
> "psDescricao" text = ''::text
> )
> RETURNS boolean AS
> $body$
> DECLARE
>    viCBO INTEGER;
>
> BEGIN
> --  raise notice 'chegou aqui finalmente';
>    if piCBO = 0 then
> --    raise notice 'chegou aqui2';
>      PERFORM * from glb.cbofamilia cbof where cbof.idcbofamilia = piFamilia;
>      if not found then
>        insert into glb.cbofamilia (idcbofamilia, descricao) values
> (piFamilia, CAST(psDescricao AS VARCHAR));
>      end if;
>    else
>      PERFORM * from glb.cbo cbo where cbo.idcbofamilia = piFamilia and
> cbo.idcbo = piCBO;
>      if not found then
>        insert into glb.cbo (idcbofamilia, idcbo, descricao) values
> (piFamilia, piCBO, CAST(psDescricao AS VARCHAR));
>      end if;
>    end if;
>
>    RETURN True;
> END;
> $body$
> LANGUAGE 'plpgsql'
> VOLATILE
> CALLED ON NULL INPUT
> SECURITY INVOKER
> COST 100;
>
> Mais quando vamos fazer um SELECT... exemplo de SELECT
>
> select public.atualizar_cbo (2521,0,'ADMINISTRADORES');
>
> ele da o seguinte erro:
>
> ERROR:  column "picbo" does not exist
> LINE 1: SELECT piCBO = 0
>                 ^
> QUERY:  SELECT piCBO = 0
> CONTEXT:  PL/pgSQL function "atualizar_cbo" line 7 at IF
>
> Gostaria de saber se existe alguma coisa de errada na criação dessa
> FUNCTION, se sim qual é o erro que estamos cometendo.

Você declarou a variável piCBO entre aspas.
Quando se usam aspas, a caixa é respeitada e a variável sempre terá de 
ser usada entre aspas.

"piCBO" é diferente de piCBO
picBO é igual a picbo que é igual a PICBO, ou seja, sem aspas, o 
PostgreSQL considera que é minúscula sempre.

[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a