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

Responder a