Re: Error de Funciones en Postgresql 8

From: Julio Rivero <jcrmlima(at)gmail(dot)com>
To: gabriela lópez <gabydhi(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Error de Funciones en Postgresql 8
Date: 2005-08-17 05:38:51
Message-ID: d34a12b605081622386a087ce3@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola:
Mira, yo hice una función igualita y me devuelve el sid o código del
usuario de la base de datos, el $1 es porque no estas haciendo referencia en
ninguna parte de tu función al argumento o argumentos que pasas a la misma.
CREATE FUNCTION sp_nuevoinicio(_login varchar,_pass varchar) RETURNS void
AS
El _login pasa a ser en la función como $1 y el _pass para a ser el $2,
ademas, donde pones:
CREATE USER _login PASSWORD _pass
VALID UNTIL 'infinity';
Deberias crear una cadena con un query creando el usuario y asignandole el
password, bueno, yo hice una función similar y me funciona, quizás el select
max() no es buena opción, pero por el momento es lo que pude utilizar,
espero te sirva, ahi va:
CREATE OR REPLACE FUNCTION dbtisalfa.fu_user("varchar", "varchar")
RETURNS int4 AS
$BODY$
DECLARE
vd_user ALIAS FOR $1;
vd_pass ALIAS FOR $2;
vs_execute VARCHAR;
vd_sid INT4;
BEGIN
select max(usesysid)
into vd_sid
from pg_user;
vd_sid := vd_sid + 1;
vs_execute := 'CREATE USER '||vd_user||' WITH SYSID
'||to_char(vd_sid,'999')||' PASSWORD '||vd_pass||' NOCREATEDB CREATEUSER;';
EXECUTE vs_execute;
RETURN vd_sid;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION dbtisalfa.fu_user("varchar", "varchar") OWNER TO system;

Puedes modificarla a tu gusto.
On 8/16/05, gabriela lópez <gabydhi(at)hotmail(dot)com> wrote:
>
> Hola a todos! Les escribo un poco desesperada ya, porque no he podido
> resolver mi problema :(
> Les cuento: Mi sistema debe crear un inicio de sesion en Postgres cuando
> se
> da de alta un usuario nuevo en la base.
> Mi intento de funcion es:
>
>
> CREATE FUNCTION sp_nuevoinicio(_login varchar,_pass varchar) RETURNS void
> AS
> $$
> BEGIN
> CREATE USER _login PASSWORD _pass
> VALID UNTIL 'infinity';
> RETURN;
> END;
> $$ LANGUAGE plpgsql;
>
> corro esta funcion en el analizador de consultas y cuando intento llamar
> esta funcion desde mi clase me marca un error que dice:
>
> Se ha generado la siguiente Excepción : java.sql.SQLException: ERROR:
> syntax
> error at or near "$1"
> Pero en esta funcion no tengo ningun $1 !!!!
>
> Mi Version de Postgres es 8.0 pero necesito alguna funcion que funcione
> para Postgresql 7.4.7 y para 8.0.
>
> Por favor ayuda!!! (ya intente varias formas pero no se deja :()
>
> _________________________________________________________________
> T1msn Search. Todo lo que buscas ahora más rapido
> http://search.t1msn.com.mx/
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 9: el optimizador ignorará el uso de recorridos de índice si los
> tipos de datos de las columnas no coinciden
>

--
Saludos

Att,
Julio Rivero
Movil: 98817321

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Gonzalez 2005-08-17 06:25:49 Re: Traducción de manuales.
Previous Message Mauricio Duran Torres 2005-08-17 03:20:48 Re: Consulta