Jorge Vilela escreveu:
> Pessoal, há poucos dias postei uma duvida sobre como usar o nome do
> argumento da função como variável sem o uso de ALIAS FOR.
>
> Testei aqui mas não tive êxito
>
> Um exemplo de função:
>
> CREATE OR REPLACE FUNCTION "public"."testearg" ("Pusu_id" integer,
> "Pacao" varchar, "Ptip_doc_id" integer) RETURNS "public"."tipo_mensagem" AS
> $body$
> DECLARE
> Flemb_id INTEGER;
> saida public.tipo_mensagem;
> logar BOOLEAN;
> BEGIN
> IF(Pacao='INSERIR')THEN
> RETURN saida;
> END IF;
> END;
> $body$
> LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
>
> Se rodo ela retorna o seguinte erro:
>
> ERROR: coluna "pacao" não existe
> CONTEXT: comando SQL "SELECT (Pacao='INSERIR')"
^^^^^^^^^^^^^^^^^^^^^^^^
isto está estranho!
> PL/pgSQL function "testearg" line 6 at if
>
>
Veja este teste:
bdteste=# CREATE FUNCTION testearg(par1 integer, par2 varchar, par3
integer) RETURNS integer AS
bdteste-# $$
bdteste$# DECLARE
bdteste$# mult INTEGER;
bdteste$# BEGIN
bdteste$# mult = 2;
bdteste$# IF par2 = 'INSERIR' THEN
bdteste$# RETURN mult*par1;
bdteste$# ELSE
bdteste$# RETURN -1*mult*par3;
bdteste$# END IF;
bdteste$# END;
bdteste$# $$
bdteste-# LANGUAGE 'plpgsql';
CREATE FUNCTION
bdteste=#
bdteste=# SELECT testearg(1,'INSERIR',3);
testearg
----------
2
(1 registro)
bdteste=# SELECT testearg(2,'ALTERAR',4);
testearg
----------
-8
(1 registro)
[]s
Osvaldo
_______________________________________________________
Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular.
Registre seu aparelho agora!
http://br.mobile.yahoo.com/mailalertas/
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios