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
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 |