RE: Valores por referencia Postgres

From: Lazaro Rubén García Martinez <lgarciam(at)vnz(dot)uci(dot)cu>
To: "egomez(at)adgsystems(dot)com(dot)do" <egomez(at)adgsystems(dot)com(dot)do>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Valores por referencia Postgres
Date: 2011-06-06 17:48:30
Message-ID: 294D3D02D5E18D42827B2ECFEADEB6880BE1F2DCAD@mx-interno.vnz.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Si lo que quieres es almacenar dentro de una variable el valor de un campo de una tabla, puedes mirar este procedimiento que utilizo para una tarea especifica de mi proyecto, pero tiene lo que necesitas. Espero te sirva. Saludos.

CREATE OR REPLACE FUNCTION "public"."fun_cita_listar_dias_disp" (
"seccion_trabajo" integer,
"serial_tramite" varchar
)

RETURNS SETOF "public"."tbl_cita_dia" AS
$body$
DECLARE
dia tbl_cita_dia%ROWTYPE;
cuposSeccion ct_cita_seccion_cupos;
totalTurnosReservados integer;

BEGIN

IF (upper(substr($2,1,1)) LIKE 'P' ) THEN

FOR dia IN SELECT * FROM tbl_cita_dia WHERE tbl_cita_dia.fecha >= (CURRENT_DATE)

Loop

SELECT tbl_cita_seccion.pk_cita_dia, tbl_cita_seccion.pk_tipo_seccion,
tbl_cita_seccion_documento.cupos INTO cuposSeccion FROM
tbl_cita_seccion INNER JOIN tbl_cita_seccion_documento
ON tbl_cita_seccion.pk_cita_dia = tbl_cita_seccion_documento.pk_cita_dia

AND

tbl_cita_seccion.pk_tipo_seccion = tbl_cita_seccion_documento.pk_tipo_seccion
WHERE tbl_cita_seccion.pk_cita_dia = dia.pk_cita_dia AND tbl_cita_seccion.pk_tipo_seccion = $1
AND tbl_cita_seccion_documento.pk_tipo_documento = 1;

SELECT count(*) INTO totalTurnosReservados FROM tbl_tramite_pasaporte_cita
WHERE tbl_tramite_pasaporte_cita.pk_cita_dia = cuposSeccion.pk_cita_dia
AND tbl_tramite_pasaporte_cita.pk_tipo_seccion = cuposSeccion.pk_tipo_seccion;

IF ( cuposSeccion.cupos > totalTurnosReservados) THEN
RETURN NEXT dia;
END IF;
END Loop;
ELSE
FOR dia IN SELECT * FROM tbl_cita_dia WHERE tbl_cita_dia.fecha >= (CURRENT_DATE)

Loop

SELECT tbl_cita_seccion.pk_cita_dia, tbl_cita_seccion.pk_tipo_seccion,
tbl_cita_seccion_documento.cupos INTO cuposSeccion FROM
tbl_cita_seccion INNER JOIN tbl_cita_seccion_documento
ON tbl_cita_seccion.pk_cita_dia = tbl_cita_seccion_documento.pk_cita_dia
AND
tbl_cita_seccion.pk_tipo_seccion = tbl_cita_seccion_documento.pk_tipo_seccion
WHERE tbl_cita_seccion.pk_cita_dia = dia.pk_cita_dia AND tbl_cita_seccion.pk_tipo_seccion = $1
AND tbl_cita_seccion_documento.pk_tipo_documento = 2;

SELECT count(*) INTO totalTurnosReservados FROM tbl_tramite_acreditacion_cita
WHERE tbl_tramite_acreditacion_cita.pk_cita_dia = cuposSeccion.pk_cita_dia
AND tbl_tramite_acreditacion_cita.pk_tipo_seccion = cuposSeccion.pk_tipo_seccion;

IF ( cuposSeccion.cupos > totalTurnosReservados) THEN
RETURN NEXT dia;
END IF;
END Loop;
END IF;
END;
$body$
LANGUAGE 'plpgsql';

________________________________________
De: pgsql-es-ayuda-owner(at)postgresql(dot)org [pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de egomez(at)adgsystems(dot)com(dot)do [egomez(at)adgsystems(dot)com(dot)do]
Enviado el: viernes, 03 de junio de 2011 15:41
Para: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: [pgsql-es-ayuda] Valores por referencia Postgres

Saludos al grupo!

En algunos lenguajes de programacion puedo hacer lo siguiente:

lnCantidad = 1
valor = "cantidad"+ str(lnCantidad)
valor2 = &valor

No puedo hacer lo mismo en plsql? No puedo hacer referencia a un campo de una tabla de esta manera, en vez de preguntar uno por uno?

Gracias mil!

[cid:F016596C-EBBD-48B5-B586-9D1D09DE8FFA]
Eris J. Gómez
ADGSystems, EIRL
Gestor de Proyectos
Tel. 809.241.7309
egomez(at)adgsystems(dot)com(dot)do<mailto:egomez(at)adgsystems(dot)com(dot)do>
http://www.adgsystems.com.do<http://www.adgsystems.com.do/>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gilberto Castillo Martínez 2011-06-06 17:49:37 Re: Valores por referencia Postgres
Previous Message Lazaro Rubén García Martinez 2011-06-06 16:38:12 RE: Problema con Pgbench y Pgpool-II