| From: | Ben Morrow <ben(at)morrow(dot)me(dot)uk> |
|---|---|
| To: | cruz(at)sygecom(dot)com(dot)br, pgsql-sql(at)postgresql(dot)org |
| Subject: | Re: From with case |
| Date: | 2013-03-25 22:50:40 |
| Message-ID: | 20130325225034.GA73919@anubis.morrow.me.uk |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
Quoth cruz(at)sygecom(dot)com(dot)br (Mauricio Cruz):
>
> I'm working in a PL/SQL and I'd like to use the same
> PL for 2 kinds of tables...
>
> I have "valepag" and "valerec" both tables
> have the same columns, but one is for debit and the other one is for
> credit, the PL will work for both cases
>
> with the unique diference for
> the name of the table...
>
> So I thought to use something like this:
> ...
>
> For rSql in select a.adiant,
> a.desc_per
> from case
> when
> cTip='P'
> then valapag
> else valerec
> end
> where cod=2 Loop
>
> ...
>
> But
> it just dont work... does some one have other solution for this case ?
I would use a view for this:
create view vale_any as
select 'P'::text "type", v.adiant, v.desc_per, v.cod
from valepag v
union all
select 'R', v.adiant, v.desc_per, v.cod
from valerec v;
then
for rSql in
select a.adiant, a.desc_per
from vale_any a
where a.type = cTip and a.cod = 2
loop
You need to cast the constant in the view definition, otherwise Pg
complains about its type being ambiguous. You should use the same type
as cTip will be.
Ben
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Pavel Stehule | 2013-03-26 05:33:31 | Re: From with case |
| Previous Message | Mauricio Cruz | 2013-03-25 14:38:17 | Re: From with case |