Olá,

Em 4 de maio de 2011 17:32, Cesar Pedroso <[email protected]> escreveu:

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

Sim. A partir uma função você chama outra função e trabalha com o resultado
dentro dela. Não é isso que você quer? Qual o seu objetivo?

Posso estar enganado, mas se você usar uma função dentro de outra sem usar o
resultado para algum procedimento você pode fazer executar seqüencialmente
uma depois da outra.


>
> 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?
>

Neste caso você precisa usar o comando PERFORM em vez do comando SELECT.

>
> 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
>
>

Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a