Bases de Datos > PostgreSQL
Ayuda Con Creacion De Usuarios
(1/1)
javier3:
hola con todos no se si alguien me puede ayudar porque me sale error, creo que es por el formato del nombre del usuario que le paso como parametro, alguien ayudeme porfavor Gracias
create or replace function fu_cambia_clave(pc_user varchar(5), pc_clave varchar(10)) returns varchar as
$body$
begin
ALTER USER pc_user ENCRYPTED PASSWORD pc_clave NOCREATEDB NOCREATEUSER;
return 'ok';
end;
$body$
language 'plpgsql';
select fu_cambia_clave('00122', 'nuevaclave')
Resultado :
ERROR: syntax error at or near "$1" at character 13
QUERY: ALTER USER $1 ENCRYPTED PASSWORD $2 NOCREATEDB NOCREATEUSER
CONTEXT: PL/pgSQL function "fu_cambia_clave" line 2 at SQL statement
JuanK:
Esta mal en varios aspectos.
1- No puedes usar sentencias DCL directamente dentro de un bloque PL/SQL
2- Dado el punto 1, esto implica que debes es crear una cadena con el comando que necesitas, por lo cual:
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->ALTER USER pc_user ENCRYPTED PASSWORD pc_clave NOCREATEDB NOCREATEUSER; <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
esta mal ya quie deberias crear una variable varchar y a esta asignarle el ersultado de concatenar la cadena anterior mas o menos asi ( no se postgres, se oracle):
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->'ALTER USER '|| pc_user||' ENCRYPTED PASSWORD '||pc_clave||' NOCREATEDB NOCREATEUSER'; <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
3- Debes averiguar como ejecutas sentencias dinamicas en PostgreSQL para de esta manera enviarla cadena creada a ejecucion, para el caso de oracle seria:
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->EXECUTE IMMEDIATE cadenaInstruccion; <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->
Navegación
Ir a la versión completa