Wątek przeniesiony 2014-06-05 15:22 z PHP przez dzek69.

PL/SQL objaśnienie

0

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 ??

0

Bądź tak łaskaw chociaż przepisać ten kod do posta

// No i dlaczego post w PHP jest?

0
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

1

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

1
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.

0

dzięki wielkie :)

0

Czyli w tym programie zastosowano Pętlę kursowa jawnego zgadza się?

1 użytkowników online, w tym zalogowanych: 0, gości: 1