Osvaldo Rosario Kussama escreveu:
> Mateus escreveu:
>> Estou tentando fazer uma função onde o parametro "text" será o nome da
>> sequence o integer o select max da tabela onde eu quero pegar o valor
>> que sera atribuido a sequence.
>>
>> Para executar ficaria assim:
>> select * from alt_seq('next_tabela',(select max(codigo) from tabela));
>>
>> Quando e mando compilar a função aparece o sequinte erro:
>>
>> ERROR: syntax error at or near "$1"
>> SQL state: 42601
>> Context: SQL statement in PL/PgSQL function "alt_seq" near line 7
>>
>> Tem como eu alterar o valor da sequence com uma função ou procedure ?
>>
>>
>> CREATE OR REPLACE FUNCTION alt_seq(text, integer)
>> RETURNS boolean AS
>> $BODY$
>> DECLARE
>> v1 text := $1;
>> v2 integer := $2;
>>
>> BEGIN
>> ALTER SEQUENCE v1 RESTART WITH v2;
>> RETURN TRUE;
>> END;
>> $BODY$
>> LANGUAGE 'plpgsql' VOLATILE;
>> ALTER FUNCTION alt_seq(text, integer) OWNER TO postgres;
>>
>
>
> Tente utilizar o execute:
>
> CREATE OR REPLACE FUNCTION alt_seq(text, integer)
> RETURNS boolean AS
> $BODY$
> BEGIN
> EXECUTE 'ALTER SEQUENCE ' || quote_literal($1) || ' RESTART WITH '
> || $2 || ';';
> RETURN TRUE;
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
> []s
> Osvaldo
>
>
> _______________________________________________________
> Yahoo! Mail - Sempre a melhor opção para você!
> Experimente já e veja as novidades.
> http://br.yahoo.com/mailbeta/tudonovo/
Funciona mais sem o quote_literal.
Funciona assim tb perform pg_catalog.setval(v1, v2 , false);
Muito obrigado pela ajuda de vcs.
_______________________________________________
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