2014-09-04 13:54 GMT+02:00 Marko Tiikkaja <ma...@joh.to>:

> On 9/4/14 1:47 PM, Pavel Stehule wrote:
>
>> 2014-09-04 13:37 GMT+02:00 Marko Tiikkaja <ma...@joh.to>:
>>
>>> I've started a wiki page with the list of the things I could think of at
>>>
>>> this very moment.  I probably got the most annoying ones in there, but I
>>> also might have forgotten about some things.  I invite discussion of
>>> every
>>> suggestion on -HACKERS.
>>>
>>
>> where I can wrote comments?
>>
>
> I guess comments could be added as a subsection if you feel -HACKERS
> doesn't work.


ok


>
>
>  I am sorry, It is difficult - your usage of plpgsql is sometimes less,
>> some
>> times more against best practices :(
>>
>
> Best practices according to whom?  And which parts, exactly?  There's
> quite a lot of stuff in there, both explicitly stated and implicitly
> assumed.
>
>
>  PL functions should not be only envelope to SQL statement
>>
>
> I disagree, to some extent.  Our "external" applications interface with
> the database only by calling functions (which are often written in
> PL/PgSQL).  If that function has no more work to do than to run a single
> query, then yes, the function will just serve as an envelope to a single
> query.  But that also allows the function to be changed in the future
> without having to change the application.  Similarly to how you would
> expose an API when communicating with others instead of giving them a
> postgres user account and saying "update these tables" and after a month
> saying "oh, you need to remember to INSERT into this table as well or we
> won't have logs of what you did".
>

for example best practices for PL/SQL by Steven Feuerstein

We can talk about it - it subjective and I know so there are not only one
style.

For example, you can use a ALIAS to parameters if you have a problem with
parameter variables

postgres=# create or replace function foo(out a int) as $$ declare _x alias
for a; begin _x := 10; end $$ language plpgsql;
CREATE FUNCTION
postgres=# select foo();
 foo
-----
  10
(1 row)

or if you can be more secure use a block label

postgres=# create or replace function foo(out a int) as $$ <<main>> declare
_x alias for a; begin main._x := 10; end $$ language plpgsql;
CREATE FUNCTION
postgres=# select foo();
 foo
-----
  10
(1 row)

The language has these possibilities. Why to add new redundant?

Pavel


>
>
> .marko
>

Reply via email to