From: | "Javier" <e24971(at)uajms(dot)edu(dot)bo> |
---|---|
To: | "Daniel Soto" <daniel(dot)soto2k(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: como se declaran variables? |
Date: | 2007-07-05 15:51:16 |
Message-ID: | 2322.172.16.10.140.1183650676.squirrel@webmail.uajms.edu.bo |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Daniel Soto escribió:
> Hola, primero que todo me presento, soy Daniel, desde Chile y soy un
> recien
> iniciado en Postgesql.
>
> Necesito ayuda: Estoy aprendiendo a escribir procedimientos almacenados,
> pero tengo problemas con declarar variables locales o internas, y con los
> bloques begin-end.
>
> He escrito el siguiente procedimiento.
>
> create or replace function test.add_new(int, int) returns void as $$
> declare
> iv int:=0;
> begin
> insert into test.family
> values
> (
> $1,
> $2
> );
> end;
> $$ language 'sql';
>
> pero me sale "error de sintaxis cerca de int". Tambien, me manda error de
> sintaxis cerca de "begin" (cuando le quito la parte del declare). Ese
> procedimiento lo he escrito a partir de multiples ejemplos por toda la web
> y
> la documentacion de postgresql, que aseguran que esa es la forma en que se
> deben escribir los procedimientos, pero a mi no me funciona, ya que me
> salen
> los errores descritos. He tratado de cambiar el lenguaje a "plpgsql" pero
> me
> dice que dicho lenguaje no existe, que no esta instalado.
>
> Uso ubuntu 7.04 y pgadmin3 para escribir los procedimientos. Instale
> postgresql 8.2 desde los repositorios.
>
> El procedimiento se crea correctamente si no le pongo ningun declare ni
> bloque begin-end.
>
> Por favor, ayudenme que estoy muy perdido.
>
> Desde ya, pido disculpas si no es el correo correcto al que debo postear,
> soy muy nuevo y nunca me he suscrito a una lista de correo.
>
> Un saludo y gracias de antemano.
aqui te va un ejemplo espero que te ayude:::
CREATE OR REPLACE FUNCTION gins_per(integer, integer, character varying,
character varying, character varying, character varying, date, character
varying, integer)
RETURNS integer AS
$BODY$
declare
id_inst alias for $1;
fun_p alias for $2;
nomb_p alias for $3;
app alias for $4;
apm alias for $5;
mail alias for $6;
fecha alias for $7;
op alias for $8;
begin
if op='a' then
insert into inst_person(id_i,nombre_p,app_p,apm_p,mail_p,func_p,fecha_p)
values(id_inst,nomb_p,app,apm,mail,fun_p,fecha);
return 0;
elsif op='m' then
update inst_person set nombre_p=nomb_p,app_p=app,apm_p=apm,mail_p=mail
where id_p=$9;
return 0;
else return 1;
end if;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
From | Date | Subject | |
---|---|---|---|
Next Message | Moises Alberto Lindo Gutarra | 2007-07-05 15:53:23 | Re: ¿¿Porque PostgreSQL?? |
Previous Message | Alvaro Herrera | 2007-07-05 15:46:03 | Re: Nombre del Elefante |