Aclaración, no funciona desde PGADMIN, pero SÍ desde código(cuando llamo a la
función)...
Aprovechando este hilo, de esta manera, se puede acceder a comandos y demás de psql como pg_dump
y este tipo de cosas?.
Si es así, hay que tener algo en cuenta?.
Muchas gracias por la ayuda.
Un saludo
Suso
El 15 de septiembre de 2009 16:11, suso <jlcu...@terra.es
<mailto:jlcu...@terra.es>> escribió:
Hola de nuevo, tenngo esta función para intentar cambiar el pass del
usuario,pero me da error al intentar ejecutarla desde el mismo
pgadmin, está mal escrita..
El error me lo da en la línea del ALTER ROLE.
CREATE OR REPLACE FUNCTION cambiar(clave character varying)
RETURNS boolean AS
$BODY$
DECLARE
nombre varchar;
BEGIN
nombre = current_user;
ALTER ROLE nombre WITH PASSWORD clave;
RETURN true;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
He buscado info en el manual de postgres, en internet, y
"supuestamente" esta bien puesto, pero no es así, por qué, qué estoy
haciendo mal?.
Muchas gracias
Un saludo
Suso
Imagino que el error que te marca es que no encuentra el role nombre.
Para hacer esto tendrias que armar la sentencia del alter role con execute.
CREATE OR REPLACE FUNCTION cambiar(clave character varying)
RETURNS boolean AS
$BODY$
DECLARE
--nombre varchar;
BEGIN
--nombre = current_user;
execute 'ALTER ROLE '||current_user ||' WITH PASSWORD
'''||clave||'''';
RETURN true;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo