Witam,
mam mały problem ze zrozumieniem kodu. Czy mógłby mi ktoś powolutku wyjaśnić do czego służy dany fragment programu ??
Bądź tak łaskaw chociaż przepisać ten kod do posta
// No i dlaczego post w PHP jest?
DECLARE
TYPE t_tmp is RECORD(
id studenci.student_id%type,
nazwisko studenci.nazwisko%type);
tmp t_tmp;
TYPE t_tmp2 IS RECORT (
id studenci.student_id%type,
nazwisko studenci.nazwisko%type);
tmp2 t_tmp;
info varchar2(250) default 'Informacja:';
CURSOR c_tmp is SELECT student_id, nazwisko from studenci;
BEGIN
OPEN c_tmp;
LOOP
FETCH c_tmp INTO tmp;
tmp2:=tmp;
info:=info||tmp2.id||' '; //nie wiem czy tu dobrze widzę na zdjęciu, słaba jakość.
DBMS_OUTPUT.PUT_LINE(info||nazwisko);
EXIT WHEN c_tmp%ISOPEN;
END LOOP;
CLOSE c_tmp
Dzięki za pomoc
jak dla mnie najpierw funkcja DECLARE'uje sobie typ tymczasowe jako RECORD ( w sumie nie wiem po co ) i jak widzisz robi tez nazwy w nich jako id i nazwisko (w sumie po polsku tabela??? kto to projektuje) potem deklaruje zmienna info na domyslna Informacja nastepnie wbiera dane select student_id, nazwisko z tabeli studenci i w petli rekord po rekordzie przetwarza dane tak by wypisac:
Informacja4 Wazalski
Informacja5 Kolezenski
Informacja6 Laskowski
I chyba to eszystko ale może się myle to niech ktoś mnie poprawi
DECLARE
TYPE t_tmp is RECORD( # definiesz nowa strukture o polach id i nazwisko
id studenci.student_id%type,
nazwisko studenci.nazwisko%type);
tmp t_tmp; # nowa zmienna ktora jest struktura powyzej
TYPE t_tmp2 IS RECORD ( # to samo co wyzej
id studenci.student_id%type,
nazwisko studenci.nazwisko%type);
tmp2 t_tmp; # kolejna zmienna, inna struktura (chociaz ich pola niczym sie nie roznia)
info varchar2(250) default 'Informacja:'; # zmienna typu varchar2, przyjmuja max 250 znakow, i domyslnie jest w niej slowo "Informacja:"
CURSOR c_tmp is SELECT student_id, nazwisko from studenci; # nowy kursor do odczytania rekordow zapytania SELECT
BEGIN
OPEN c_tmp; # pobierasz dane
LOOP # otwarcie pętli
FETCH c_tmp INTO tmp; # wpisujesz dane z kursora do zmiennej tmp
tmp2:=tmp; # przypisanie do tmp2 danych z tmp
info:=info||tmp2.id||' '; # łączenie ciągu znaków
DBMS_OUTPUT.PUT_LINE(info||nazwisko); # wypisanie tego co mamy
EXIT WHEN c_tmp%ISOPEN; # zamkniecie skryptu jesli kursor juz nie ma do pokazania
END LOOP; # zamykamy petle
CLOSE c_tmp # zamykamy kursor.
PS. Nigdy nie mialem stycznosci z PLSQL wiec mogą być błędy. To co napisałem to czysta dedukcja.
dzięki wielkie :)
Czyli w tym programie zastosowano Pętlę kursowa jawnego zgadza się?