Então Jota dessa maneira seria uma function chamando outra function e nao
uma dentro da outra correto?

Juliano fiz a alteração mas agora esta dando outro erro.

ERRO:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function "cqlfn000_script_172rc1" line 23 at SQL
statement
********** Erro **********
ERRO: query has no destination for result data
SQL state: 42601

Dentro da minha segunda function tem um select count, pode ser isso?

Abraços

Cesar

2011/5/4 JotaComm <[email protected]>

> Opa,
>
> É possível sim.
>
> De uma olhada no seguinte exemplo:
>
> CREATE FUNCTION soma(INTEGER,INTEGER)
>
> RETURNS INTEGER AS $$
>
>     SELECT $1+$2;
>
> $$ LANGUAGE SQL;
>
> CREATE FUNCTION multiplicacao(INTEGER,INTEGER,INTEGER)
>
> RETURNS INTEGER AS $$
>
> DECLARE
>
>     resultado_soma INTEGER NOT NULL:=soma($1,$2);
>
> BEGIN
>
>     RETURN resultado_soma*$3;
>
> END;
>
> $$ LANGUAGE PLPGSQL;
>
>
> SELECT multiplicacao(2,2,5);
>
> Em 4 de maio de 2011 15:47, Cesar Pedroso <[email protected]>escreveu:
>
> Bom mudanças de ultima hora de como executar os scripts estou analizando as
>> possibilidades.
>>
>> Opa obrigado a ajuda vou testar aqui.
>>
>>
>> On Wed, May 4, 2011 at 3:34 PM, Juliano Benvenuto Piovezan <
>> [email protected]> wrote:
>>
>>> On Wed, May 4, 2011 at 3:17 PM, Cesar Pedroso <[email protected]>wrote:
>>>
>>>>
>>>> CREATE OR REPLACE FUNCTION teste()
>>>>   RETURNS void AS
>>>> $BODY$
>>>>  BEGIN
>>>>
>>>>    SET search_path = xxx;
>>>>    SET default_tablespace = xxx;
>>>>
>>>>    CREATE OR REPLACE FUNCTION FUNC1()
>>>>      RETURNS void AS
>>>>      $BODY$
>>>>    DECLARE
>>>>      vcount        numeric(1);
>>>>    BEGIN
>>>>
>>>>    END;
>>>>      $BODY$
>>>>    LANGUAGE 'plpgsql';
>>>> select * from FUNC1();
>>>> drop function FUNC1();
>>>>
>>>>   RETURN;
>>>> end; $BODY$
>>>>   LANGUAGE 'plpgsql' VOLATILE;
>>>>
>>>>
>>> Usando a notação $$, você está fechando a declaração do corpo da função
>>> teste() na linha 9. Dê uma olhada sobre a notação $ neste link [1].
>>>
>>> Assim deve funcionar:
>>>
>>>
>>> CREATE OR REPLACE FUNCTION teste()
>>>   RETURNS void AS
>>> $BODYTESTE$
>>>
>>>  BEGIN
>>>
>>>    SET search_path = xxx;
>>>    SET default_tablespace = xxx;
>>>
>>>    CREATE OR REPLACE FUNCTION FUNC1()
>>>      RETURNS void AS
>>>      $BODYFUNC$
>>>
>>>    DECLARE
>>>      vcount        numeric(1);
>>>    BEGIN
>>>
>>>    END;
>>>      $BODYFUNC$
>>>
>>>    LANGUAGE 'plpgsql';
>>> select * from FUNC1();
>>> drop function FUNC1();
>>>
>>>   RETURN;
>>> end; $BODYTESTE$
>>>   LANGUAGE 'plpgsql' VOLATILE;
>>>
>>> [1]
>>> http://www.postgresql.org/docs/8.4/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> Abraços
> --
> JotaComm
> http://jotacomm.wordpress.com
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a