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: [email protected] [[email protected]] 
En nombre de [email protected] [[email protected]]
Enviado el: viernes, 03 de junio de 2011 15:41
Para: [email protected]
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
[email protected]<mailto:[email protected]>
http://www.adgsystems.com.do<http://www.adgsystems.com.do/>





-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a