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