Re: Procedimientos almacenados postgresql 8.2.4 en plsql

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/

In response to

Browse pgsql-es-ayuda by date

  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