Re: ayuda con vistas

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Maria Eugenia Paradas Mendez <mpm_maru(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ayuda con vistas
Date: 2006-05-19 16:44:56
Message-ID: 20060519164456.GG9919@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Maria Eugenia Paradas Mendez escribió:
> Buenos dias.
> Por favor tengo un problema: estoy utilizando una funcion para crear una
> vista que es la siguiente:
>
> --OBTENER SOLICITUDES DEL RANGO Y DEL PROVEEDOR
> CREATE OR REPLACE FUNCTION valobtsolprovran(_varchar) RETURNS integer AS $$
> --Maria Eugenia Paradas
> --17/05/2006
> --Las entradas a suministrar son: el rif del proveedor, la fecha inicial
> del rango y la fecha final
> DECLARE
> arre $1%TYPE := $1;
> prov varchar:= arre[1];
> ini date:= (CAST(arre[2] AS date));
> fin date:= (CAST(arre[3] AS date));
> BEGIN
> CREATE OR REPLACE TEMPORARY VIEW vista_sol_pro_ran AS
> SELECT s.* FROM solpeda_prov s, relprodprov r WHERE ((s.fecha >=
> ini)and(s.fecha <= fin)) and (s.relprodprov = r.relprodprov) and (r.rifprov
> = prov);
> return(SELECT count(*) FROM vista_sol_pro_ran);
> END;
> $$ LANGUAGE 'plpgsql';

Aca tienes tres errores:

1. estas pasando los parametros de una manera que escapa al chequeo de
tipos. En lugar de usar _varchar, usa "text, date, date".

2. estas creando una vista innecesariamente. En lugar de crear la vista
y luego hacer un SELECT COUNT(*) sobre ella, mejor haz

select count(*) from (select s.* from solpeda_prov s, ...)

El tercero ya no me acuerdo.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message elia martínez 2006-05-19 17:02:25 phpgroupware
Previous Message Maria Eugenia Paradas Mendez 2006-05-19 16:31:02 ayuda con vistas