PostgreSQL - ayuda store procedures

 
Vista:

ayuda store procedures

Publicado por Jonathan Pérez (2 intervenciones) el 29/12/2006 06:09:47
antes que nada permitanme desearles un feliuz año nuevo y que haya tenido feilz navidad, me refiero a este foro porque ya tengo mucho timepo tratando de resolver algunas dudas que tengo con respecto a postgresql, mas preciso y en forma de pregunta:

¿existen procedimientos almacenados en postgresql?
¿como se crean?

segun leí no existen en si los procedimientos almacenados (store procedures) en postgresql, por mucho tiempo he usado MS SQL Server y pues ahi si existe la definicion explicita: "CREATE PROCEDURE...", y para implementarlos en postgresql se debe crear una funcion cuyo retorno sea "void", bueno pues eso hice, he aqui lo que hice:

-- Function: oots.adduser(nick_ character varying, pass_ chkpass, name_ character varying, email_ character varying, cel_ character varying, t_user_ boolean, birth_ date, address_ character varying, city_ character varying)

-- DROP FUNCTION oots.adduser(nick_ character varying, pass_ chkpass, name_ character varying, email_ character varying, cel_ character varying, t_user_ boolean, birth_ date, address_ character varying, city_ character varying);

CREATE OR REPLACE FUNCTION oots.adduser(nick_ character varying, pass_ chkpass, name_ character varying, email_ character varying, cel_ character varying, t_user_ boolean, birth_ date, address_ character varying, city_ character varying)
RETURNS void AS
$BODY$BEGIN
INSERT INTO oots.users VALUES(nick_,pass_,name_,email_,cel_,t_user_,birth_,address_,city_);
END$BODY$
LANGUAGE 'plpgsql' VOLATILE STRICT SECURITY DEFINER;
ALTER FUNCTION oots.adduser(nick_ character varying, pass_ chkpass, name_ character varying, email_ character varying, cel_ character varying, t_user_ boolean, birth_ date, address_ character varying, city_ character varying) OWNER TO nighterpgsa;
COMMENT ON FUNCTION oots.adduser(nick_ character varying, pass_ chkpass, name_ character varying, email_ character varying, cel_ character varying, t_user_ boolean, birth_ date, address_ character varying, city_ character varying) IS 'Funcion utilizada para agregar un nuevo usuario sin el uso directo de consultas SQL. (Recordar que tambien se debe crear crear el usuario asi como sus derechos a las tablas)';

por medio del pgadmin, como pueden apreciar lo que intento hacer es una funcion (procedimiento) que reciba unos parametros y haga una insercion en cierta tabla, esto es solo un pequeño ejemplo ya que podria mandar a ejecutar solo el query de insercion pero pues es parte de lo que necesito hacer, el problema que tengo es que no se como ejecutar la funcion, investigando en internet lei que se hace por medio de select (como SELECT adduser en el caso de mi funcion) y en cierta forma funcionó el problema es que me regresa "algo" al ejecutar eso (SELECT adduser), me manda un campo "adduser void" pero el campo esta vacio, esto para mi es un problema ya que estoy manejado esta base de datos con un progama que estoy haciendo en java y al mandar el query para que realice la funcion pues captura una exception debido a que la funcion regresa algo cuando no se esperaba regreso

¿que puedo hacer, que me recomiendan que haga, porque ya tengo diseñados otros "procedimientos almacenados" que necesito en el programa pero que recurren en el mismo error y el progama detecta la exception, aun cuando el proceso esta bien? (cabe mencionar que en el programa, me manda la exception pero si hace lo que el procedimiemto tiene que hacer)



de antemano agradezco su ayuda ya que esto es para un proyecto escolar que tengo que entregar a principios de enero

atte

Jonathan Perez Patiño
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda store procedures

Publicado por Julio (334 intervenciones) el 30/12/2006 00:58:27
Si no me equivoco todo procedimiento o función de postgresql arroja un valor, puedes capturar este valor en Java llamandolo con un call y recibiendo lo que te arroja en otro parametro ? = call stament....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda store procedures

Publicado por negrojefe (1 intervención) el 25/04/2008 21:06:04
Porque no le haces retornar un integer y al final de la funcion le pones que retorne uno? entonces luego en java aceptas el string y no haces nada con el.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar