Re: From with case - Mailing list pgsql-sql

From Pavel Stehule
Subject Re: From with case
Date
Msg-id CAFj8pRCgqmuAD9bcty+a==EUZEFZXE9u4sJMQKvFwA4TGQDsxg@mail.gmail.com
Whole thread Raw
In response to From with case  (Mauricio Cruz <cruz@sygecom.com.br>)
Responses Re: From with case
List 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@sygecom.com.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



pgsql-sql by date:

Previous
From: Mauricio Cruz
Date:
Subject: From with case
Next
From: Mauricio Cruz
Date:
Subject: Re: From with case