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

Responder a