From: | Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com> |
---|---|
To: | Carlos Badilla <carlosposgres(at)yahoo(dot)es>, posgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Procedimientos almacenados postgresql 8.2.4 en plsql |
Date: | 2007-08-21 04:49:06 |
Message-ID: | 665985.12874.qm@web63701.mail.re1.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
--- Carlos Badilla <carlosposgres(at)yahoo(dot)es> escribió:
> Hola a todos, gracias por la respuesta sobre Java,
> logré instalar base de datos con Netbeans 5.5.1.
>
> Ahora quiero hacer procedimientos almacenados con
> Postgresql con parámetros , yo sé hacerlos con SQL
> Server, pero no son iguales ¿cómo se hacen con
> Postgresql con plsql?
>
> De antemano, gracias.
>
En
http://es.wikipedia.org/wiki/PL/PgSQL#Ejemplo_de_c.C3.B3digo_PL.2FpgSQL
Encontraras la definicion de uno de los lenguajes con
un ejemplo, hay incluso manual en pdf que puedes bajar
en espaniol, si me lo pides te lo mando.
Tambien puedes hacer funciones con el lenguaje sql que
soportan parametros de entrada aca un ejemplo.
CREATE OR REPLACE FUNCTION
"central"."fnc_cabezal_subtotal" (bigint) RETURNS
SETOF "central"."v_cabezal_subtotal" AS
$body$
select id_cab,total_subtotal from
central.v_cabezal_subtotal where id_cab = $1
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY
INVOKER;
v_cabezal_subtotal es una vista que se invoca desde la
funcion, para devolver los registros donde el id sea
igual al parametro. Lo malo de este ejemplo es que no
le di nombre al parametro, el cual por ser el primero
es $1, podria tener mas.
Aqui tenes otra fuente de consulta interesante habla
tambien de pl/tcl
http://www.ibiblio.org/pub/Linux/docs/LuCaS/Tutoriales/NOTAS-CURSO-BBDD/notas-curso-BD/node175.html
Otros lenguajes que puedes usar son
PL/Java,PL/Perl,plPHP no se bien este en que estado
esta,PL/Python,PL/Ruby y algunos otros se me escapan,
tambien puedes usar c y creo c++.
En fin en PostgreSQL hay para todos los gustos y
necesidades.
Esta es otra escrita en lenguaje pl/pgsql
CREATE OR REPLACE FUNCTION
"central"."fnc_ing_compras_anteriores" (varchar,
bigint, bigint, bigint, date, integer, double
precision, double precision, double precision, double
precision) RETURNS date AS
$body$
declare
CREATE OR REPLACE FUNCTION
"central"."fnc_ing_compras_anteriores" (varchar,
bigint, bigint, bigint, date, integer, double
precision, double precision, double precision, double
precision) RETURNS date AS
$body$
declare
vid_articulo alias for $1;
vid_proveedor alias for $2;
vnumero_anterior alias for $3;
vnumero_doc alias for $4;
vfecha alias for $5;
vid_moneda alias for $6;
vcantidad alias for $7;
vfob alias for $8;
vcif alias for $9;
vcosto_prom_mn alias for $10;
curtime date;
BEGIN
curtime :='now';
INSERT INTO central.compras_sistema_anterior
(id_articulo,id_proveedor,numero_anterior,numero_doc,fecha,id_moneda,
cantidad,fob,cif,costo_prom_mn)
select $1,$2,$3,$4,$5,$6,$7,$8,$9,$10;
RETURN curtime;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT
SECURITY INVOKER;
Bueno aca tampoco use los nombres de las variables,
seguro te vas a familiar mucho con pl/java.
Cada uno existe por algo a mi me gusta mucho pl/pgsql
y cada dia aprendo mas de el y mejoro mis funciones.
Atte.
Gabriel Hermes Colina Zambra
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2007-08-21 06:41:19 | Re: EnterpriseDB vs postgres |
Previous Message | Gabriel Hermes Colina Zambra | 2007-08-21 03:45:44 | Re: Hola |