From: Adrian Klaver <adrian.klaver@aklaver.com>
To: Ertan Küçükoğlu <ertan.kucukoglu@1nar.com.tr>
To: pgsql-sql@postgresql.org
Subject: Re: SQL conversion help
Date: Sat, 20 May 2017 06:38:08 -0700
Message-ID: <751b5e59-0bac-6bfa-6f93-f82b7db05802@aklaver.com> (raw)
In-Reply-To: <000201d2d16c$6e2fb860$4a8f2920$@1nar.com.tr>
References: <025d01d2d11d$cb2ebba0$618c32e0$@1nar.com.tr>
<91052907-df30-2c98-a058-3f88dd204059@aklaver.com>
<000201d2d16c$6e2fb860$4a8f2920$@1nar.com.tr>
List-Unsubscribe: <mailto:majordomo@postgresql.org?body=unsub%20pgsql-sql>
On 05/20/2017 06:24 AM, Ertan Küçükoðlu wrote:
>> -----Original Message-----
>> From: Adrian Klaver [mailto:adrian.klaver@aklaver.com]
>> Sent: Saturday, May 20, 2017 7:08 AM
>> To: Ertan Küçükoðlu <ertan.kucukoglu@1nar.com.tr>;
> pgsql-sql@postgresql.org
>> Subject: Re: [SQL] SQL conversion help
>>
>> On 05/19/2017 09:01 PM, Ertan Küçükoðlu wrote:
>>> Hello,
>>>
>>> I have below SQL script used in SQL Server. I would like some help to
>>> convert it into PostgreSQL format, please.
>>>
>>> DECLARE @satirno INT
>>> SET @satirno = 0
>>> UPDATE urtrecetedet
>>> SET @satirno = satirno = @satirno + 1
>>> WHERE recetekodu = 'ASD'
>>
>> I would suggest taking a look at:
>>
>> https://www.postgresql.org/docs/9.6/static/plpgsql.html
>>
>> In particular:
>>
>> https://www.postgresql.org/docs/9.6/static/plpgsql-structure.html
>>
>> https://www.postgresql.org/docs/9.6/static/plpgsql-declarations.html
>>
>> https://www.postgresql.org/docs/9.6/static/plpgsql-statements.html
>
> Hi Adrian,
>
> Thanks for documents links. After checking them out. I ended up using
> something like following SQL script instead of a function.
>
> create sequence if not exists fsatirno;
> alter sequence fsatirno restart;
> update urtrecetedet
> set satirno = nextval('fsatirno')
> where recetekodu = 'ASD';
Be aware that a sequence is not guaranteed to provide a gapless sequence
of numbers:
https://www.postgresql.org/docs/9.6/static/sql-createsequence.html
"
Notes
...
Because nextval and setval calls are never rolled back, sequence objects
cannot be used if "gapless" assignment of sequence numbers is needed. It
is possible to build gapless assignment by using exclusive locking of a
table containing a counter; but this solution is much more expensive
than sequence objects, especially if many transactions need sequence
numbers concurrently.
Unexpected results might be obtained if a cache setting greater than one
is used for a sequence object that will be used concurrently by multiple
sessions. Each session will allocate and cache successive sequence
values during one access to the sequence object and increase the
sequence object's last_value accordingly. Then, the next cache-1 uses of
nextval within that session simply return the preallocated values
without touching the sequence object. So, any numbers allocated but not
used within a session will be lost when that session ends, resulting in
"holes" in the sequence.
...
"
>
>
>
>
--
Adrian Klaver
adrian.klaver@aklaver.com
--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: adrian.klaver@aklaver.com, ertan.kucukoglu@1nar.com.tr
Subject: Re: SQL conversion help
In-Reply-To: <751b5e59-0bac-6bfa-6f93-f82b7db05802@aklaver.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox