Problem z numerami sekwencyjnymi w SQL przez ODBC

Posted by Andrzej_Sz on 17-Jan-2015 13:54

SQL-owe funkcje dostępu do sekwencji "schema.sequence.CURRVAL" i "schema.sequence.NEXTVAL" są niedostępne poprzez ODBC. Czy aktualna wartość sekwencji jest gdzieś dostępna w tablicach systemowych, by można było ją czytać i modyfikować ? A może jest jakiś inny, dobry sposób nadawania kolejnych numerów rekordom tej samej tablicy za pomocą SQL i 4GL ?

All Replies

Posted by Piotr Tucholski on 18-Jan-2015 10:25

Panie Andrzeju,

W 4GL można odczytać aktualną wartość sekwencji poprzez funkcję CURRENT-VALUE oraz następną wartość NEXT-VALUE. Ta ostatnia jest wykorzystywana w trygerach np. nowa_wartość = NEXT-VALUE(nazwa_serwencji).

Co się tyczy SQL to proszę przeczytać dokument:

knowledgebase.progress.com/.../P183766

Proszę dać znać czy to rozwiąże Pana problem.

Posted by Andrzej_Sz on 18-Jan-2015 11:51

Jak już pisałem, funkcje "sequence.CURRVAL" i "sequence.NEXTVAL" nie są dostępne przez ODBC i JDBC, a metoda wyszukiwania ostatnio użytej wartości ID może zawieść. Co gorsza, rekordy będą tworzone z użyciem 4GL oraz SQL-ODBC.

Posted by Andrzej_Sz on 20-Jan-2015 12:06

Systemowa tablica "_Sequence" nie zawiera ostatnio użytego numeru sekwencyjnego - prawdopodobnie jest gdzieś głęboko zaszyty.

Posted by Piotr Tucholski on 20-Jan-2015 13:39

Tak, zgadza się.

This thread is closed