Re: From with case

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Mauricio Cruz <cruz(at)sygecom(dot)com(dot)br>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: From with case
Date: 2013-03-25 14:01:09
Message-ID: CAFj8pRCgqmuAD9bcty+a==EUZEFZXE9u4sJMQKvFwA4TGQDsxg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hello

> For rSql in select a.adiant,
> a.desc_per
> from case
> when cTip='P'
> then valapag
> else valerec
> end
> where cod=2 Loop

you can use a dynamic SQL, but it is not best solution usually. In
this case I usually prefer

IF cTip = 'P' THEN
FOR r IN SELECT .. FROM valapag LOOP
PERFORM proc(r);
END LOOP;
ELSE
FOR r IN SELECT .. FROM valerec LOOP
PERFORM proc(r);
END LOOP;
END IF;

with dynamic SQL

FOR r IN EXECUTE format('SELECT .. FROM %I ..', CASE WHEN ctip = 'P'
THEN 'valapag' ELSE 'valerec' END)
LOOP
..
END LOOP;

Regards

Pavel Stehule

2013/3/25 Mauricio Cruz <cruz(at)sygecom(dot)com(dot)br>:
> Hi everyone,
>
>
>
> 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 ?
>
>
>
> Thanks guys.
>
>
>
> --
> Grato,
> Mauricio Cruz
> Sygecom Informática
> 51 3442-3975 / 3442-2345

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Mauricio Cruz 2013-03-25 14:38:17 Re: From with case
Previous Message Mauricio Cruz 2013-03-25 13:48:00 From with case