RE: Procedimientos almacenados

From: "Luis Flores soberon" <lmflores78(at)hotmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: RE: Procedimientos almacenados
Date: 2005-10-20 14:13:17
Message-ID: BAY20-F7F6CB08787DC0B3C3E2C8C0730@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Bueno.. Pues encontré la solución en un ejemplo de una página.

http://techdocs.postgresql.org/techdocs/crystalreports.php

Les mando cómo quedo la solución final por si alguien se está topando con
algún problema similiar.
Espero les sirva.

La parte que cambió quedó así:

FOR cursorTemporal IN EXECUTE \'SELECT
a.id,a.rfc_clie,a.foliovta,a.quincena,a.importe,b.desc_nom
FROM \' || esquema || \'.vtasabod as a,\' || esquema || \'.catnomi as
b
WHERE foliovta = \'\'\' || folioVenta || \'\'\' AND a.tiponom =
b.cve_nom
ORDER BY a.quincena\'
LOOP

Saludos

>From: "Luis Flores soberon" <lmflores78(at)hotmail(dot)com>
>To: alvherre(at)alvh(dot)no-ip(dot)org
>CC: pgsql-es-ayuda(at)postgresql(dot)org
>Subject: [pgsql-es-ayuda] Procedimientos almacenados
>Date: Thu, 20 Oct 2005 00:45:21 +0000
>
>Alvaro:
>
>Tengo una base de datos con varios esquemas y tengo una función que recibe
>entre otros, un parámetros que corresponde al esquema del que se debe sacar
>la información (todos los esquemas tienen exactamente la misma estructura).
>A continuación les mando el procedimiento:
>
>CREATE OR REPLACE FUNCTION regresaAbonos(char(8), numeric(13,2),
>numeric(13,2), numeric(2), char(9)) returns setof abonoHolder as
>'
>DECLARE
> cursorTemporal abonoHolder%rowtype; -- Cursor de tipo
>abonoHolder (el tipo de registro que se va a crear
> folioVenta ALIAS FOR $1; -- Alias para el
>parámetro 1 que debe ser el folio de venta
> saldoInicialParametro ALIAS FOR $2; -- Alias para el
>parámetro 2 que debe ser el saldo incial
> venta ALIAS FOR $3; -- Alias para el valor de la
>venta
> plazo ALIAS FOR $4; -- Alias para el
>parámetro 4 que debe ser el plazo de venta
> esquema ALIAS FOR $5; -- Alias para el parámetro 5 que debe ser el
>esquema
> saldoInicial numeric(9,2); -- Variable para ir
>controlando el saldo del cliente
> contadorQuincena int2; -- Contador para ir
>sacando el consecutivo de las quincenas pagadas
>
>BEGIN
> -- Aquí el saldo real se da por el valor de la venta actual más el
>monto de la venta actual
> -- La variable saldoInicial se irá decrementando y su valor inicial
>será el parámetro pasado en el argumento 2
> IF (saldoInicialParametro IS NULL AND venta IS NOT NULL) THEN
> IF (venta IS NOT NULL) THEN
> saldoInicial = venta;
> ELSE
> saldoInicial = 0;
> END IF;
> ELSE
> IF (venta IS NOT NULL) THEN
> saldoInicial = saldoInicialParametro + venta;
> ELSE
> saldoInicial = saldoInicialParametro;
> END IF;
> END IF;
> contadorQuincena = 1;
> -- Abrimos el cursor con la consulta a la tabla de los abonos hechos al
>folio de venta pasado como parámetro 1
> FOR cursorTemporal IN SELECT
>a.id,a.rfc_clie,a.foliovta,a.quincena,a.importe,b.desc_nom
> FROM tabasco.vtasabod as a,tabasco.catnomi as b
> WHERE foliovta = folioVenta AND a.tiponom = b.cve_nom
> ORDER BY a.quincena
> LOOP
>
> -- Recorremos el cursor poniendo al campo saldo del cursor el
>saldo incial menos el abono dado, Decrementamos el saldo Inicial
> cursorTemporal.saldo = saldoInicial - cursorTemporal.importe;
> saldoInicial = saldoInicial - cursorTemporal.importe;
> cursorTemporal.numeroQuincena = contadorQuincena::text || ''/'' ||
>plazo::text;
> contadorQuincena = contadorQuincena + 1;
> -- Regresamos el registro recién creado
> RETURN NEXT cursorTemporal;
> END LOOP;
> -- Si no tenemos ningún registro creamos uno en blanco con el saldo
> if (contadorQuincena < 2) THEN
> cursorTemporal.saldo = saldoInicial;
> RETURN NEXT cursorTemporal;
> END IF;
> RETURN;
>END'
>LANGUAGE 'plpgsql';
>
>
>Así jala de maravilla, pero cuando cambio tabasco por el alias esquema, no
>lo sustituye:
>"FROM esquema.vtasabod as a,esquema.catnomi as b"
>Me dice que el esquema "esquema" no existe y si lo pruebo con $5 me dice
>que hay error de sintaxis
>"FROM $5.vtasabod as a,$5.catnomi as b"
>
>Por qué no lo sustituye???
>
>Gracias de antemano
>
>Luis Flores
>
>
>
>---------------------------(fin del mensaje)---------------------------
>TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
>
> http://archives.postgresql.org/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jenny Ortiz 2005-10-20 14:51:29 URGENTE - Problemas con Sesiones usando Tomcat
Previous Message Luis Guevara 2005-10-20 13:45:36 Recuperar registro Borrado