Retornar Tabla preprocesada en Procedimiento Almacenado, Cursores

From: Hanlle Nicolás <hnicolas(dot)dev(at)gmail(dot)com>
To: "pgsql-es-ayuda(at)postgresql(dot)org\"" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Retornar Tabla preprocesada en Procedimiento Almacenado, Cursores
Date: 2012-10-08 23:12:35
Message-ID: CAL_dSPBKpc16unFJLMQLD4di1+JBNOX3po2HG5GqPikOY+ewvA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola amigos, hace rato no hago PS y solo lo habia hecho en Oracle y Mysql
no en POstgresql, así que ustedes que son los expertos espero pueda
ayudarme, tengo el siguiente SP:

CREATE OR REPLACE FUNCTION get_cost_aa(integer, integer, integer) RETURNS
TABLE(name VARCHAR, id INTEGER, provider_id INTEGER, provider_name VARCHAR,
mismo_minutos INTEGER, mismo_costo INTEGER, otros_minutos INTEGER,
otros_costo INTEGER, fijo_minutos INTEGER, fijo_costo INTEGER,
todos_minutos INTEGER, todos_costo INTEGER ) AS
$body$
DECLARE
mins_operator ALIAS FOR $1;
mins_landline ALIAS FOR $2;
mins_other ALIAS FOR $3;
otros CONSTANT integer :=677;
fijo CONSTANT integer :=678;
todos CONSTANT integer :=676;

BEGIN
RETURN QUERY
SELECT Plan.name, Plan.id, Plan.provider_id, (SELECT d.name FROM
clients_mobileprovider as d WHERE d.id=Plan.provider_id) As provider_name,
(SELECT m.minutes from products_mobileproviderplanvoicerate as m WHERE
m.provider_id=Plan.provider_id AND m.plan_id=Plan.id) as Mismo_Minutos,
(SELECT n.additional_cost from products_mobileproviderplanvoicerate AS
n WHERE n.provider_id=Plan.provider_id AND n.plan_id=Plan.id) as
Mismo_Costo,
(SELECT x.minutes from products_mobileproviderplanvoicerate AS x WHERE
x.provider_id=otros AND x.plan_id=Plan.id) as Otros_Minutos,
(SELECT z.additional_cost from products_mobileproviderplanvoicerate as
z WHERE z.provider_id=otros AND z.plan_id=Plan.id) as Otros_Costo,
(SELECT k.minutes from products_mobileproviderplanvoicerate AS k WHERE
k.provider_id=fijo AND k.plan_id=Plan.id) as Fijo_Minutos,
(SELECT r.additional_cost from products_mobileproviderplanvoicerate as
r WHERE r.provider_id=fijo AND r.plan_id=Plan.id) as Fijo_Costo,
(SELECT j.minutes from products_mobileproviderplanvoicerate AS j WHERE
j.provider_id=todos AND j.plan_id=Plan.id) as Todos_Minutos,
(SELECT w.additional_cost from products_mobileproviderplanvoicerate AS
w WHERE w.provider_id=todos AND w.plan_id=Plan.id) as Todos_Costo
FROM products_mobileplan as Plan;

END;
$body$ LANGUAGE plpgsql;
-------

Este PS recibe tres argumentos, esos tres argumentos quiero sumarlos en
cualquiera de las columnas[fijo_costo, todos_minutos, etc] (subconsultas)
dependiendo de unos condicionales que aun no he puesto por ejemplo que si
no posee [mismo_costo] sumar argumento X, estas sumas las haría sobre cada
uno de los rows de esa query sin ningún Update ni molificación, retornaría
la tabla con esos cálculos llamese no se en Postgresql como tabla virtual o
tabla temporal, Alguien me orienta un poco?, Gracias de Antemano.

Saludo.

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2012-10-08 23:34:53 RE: Diferencia entre 8.4 y 9.1 ??
Previous Message Anthony 2012-10-07 20:32:18 Re: Diferencia entre 8.4 y 9.1 ??