W
PL/SQL istnieje opcjonalna klauzula RETURNING INTO pozwalająca na
zapisanie do zmiennej wartości pochodzących z rekordu wstawianego
przez polecenie INSERT lub modyfikowanego przez UPDATE. Taka
możliwość staje się bardzo użyteczna, gdy zechcemy uzyskać ID
pochodzącego z sekwencji właśnie wstawionego rekordu, lub
generowanej dynamicznie innej wartości (np. jeśli wstawiamy
sysdate).
W
powyższym przykładzie wstawiłem nowy wiersz do tabeli jobs, a przy
pomocy klauzuli RETURNING INTO uzyskałem ID wstawionego wiersza.
Wartość ID została przypisana do zmiennej ID której typ został
zdeklarowany na podstawie typu kolumny job_id z tabeli jobs. Taka
możliwość nabiera ogromnego znaczenia, jeśli wartość wstawiana
do kolumny klucza głównego pochodzi z sekwencji, a mamy zamiar
operować na właśnie wstawionych danych. Oczywiście w takim
przypadku można by również zastosować odwołanie do currval
wykorzystywanej sekwencji, jednak nie mamy żadnej gwarancji, że w
międzyczasie ktoś inny nie skorzystał z tej samej sekwencji i nie
zmienił jej wartości.
Brak komentarzy:
Prześlij komentarz