[ Pobierz całość w formacie PDF ]
.Komponent StoredProcKomponent StoredProc reprezentuje procedurê zapamiêtan¹ (ang.storedprocedure).Procedura zapamiêtana jest to zbiór wyra¿eñ SQL, które wykonuj¹ siêjak prosty program.S¹ to indywidualne programy operuj¹ce na bazie danych,realizuj¹ce czêsto wykonywane zadania bazodanowe.Jest to u³atwienie pracy dlaprogramistów, poniewa¿ nie musz¹ oni wpisywaæ kodu linia po linii za ka¿dymrazem, gdy chc¹ wykonaæ okreœlone zadanie.Ca³a ich praca sprowadza siê wtedyjedynie do wywo³ania procedury zapamiêtanej na serwerze.Konsekwencj¹ tego jest równie¿ zmniejszenie rozmiaru aplikacji-klientów, gdy¿nie musz¹ one przechowywaæ w sobie zbêdnego kodu.Innym zadaniem procedur zapamiêtanych jest utrzymywanie integralnoœci danych.Integralnoœci¹ danych nazywa siê – w przybli¿eniu – ich wewnêtrzn¹ spójnoœæ;powracaj¹c do przyk³adu z klientami i sk³adanymi zamówieniami – jednym z(oczywistych) wymogów integralnoœci jest istnienie w tabeli CUSTOMER rekordudla ka¿dego klienta, dla którego w tabeli ORDERS istnieje chocia¿ jednozamówienie (innymi s³owy – zawartoœæ pola CustNo w ka¿dym z rekordów tabeliORDERS musi mieæ swe pokrycie w zawartoœci pola CustNo w którymœ rekordzie bazyCUSTOMER).Operuj¹c na bazie danych w sposób elementarny ³atwo tê integralnoœænaruszyæ – na przyk³ad usuwaj¹c rekord opisuj¹cy danego klienta, leczpozostawiaj¹c rekordy opisuj¹ce z³o¿one przez niego zamówienia.Ograniczenieœrodków operowania na bazie do kompletnych procedur eliminuje takie zagro¿enie– oczywiœcie pod warunkiem ich poprawnej konstrukcji; dlatego te¿ administracjêprocedurami zapamiêtanymi powierza siê z regu³y administratorowi serwera.Podobnie jak w przypadku zapytañ SQL, procedury zapamiêtane mog¹ korzystaæ zparametrów.Je¿eli chodzi o procedurê nie korzystaj¹c¹ z parametrów, jejwywo³anie polega po prostu na podaniu nazwy i fizycznym wywo³aniu:StoredProc1.StoredProcName := 'DO_IT';StoredProc1.Prepare;StoredProc1.ExecProc;Najpierw wywo³ywana jest metoda Prepare, której celem jest wstêpna preparacjaprocedury [4 Preparacja taka nie jest konieczna – ma ona na celu jedynieoptymalizacjê wykonania procedury (nie zawsze zreszt¹ skuteczn¹) i nie wp³ywana wynik jej wykonania (przyp.red.)].Nastêpnie przychodzi kolej na metodêExecProc, która dokonuje fizycznego wywo³ania procedury zapamiêtanej.W przypadku procedur parametryzowanych nale¿y bezpoœrednio przed wywo³aniemustawiæ wartoœci parametrów, na przyk³ad:StoredProc1.StoredProcName := 'ADD_EMP_PROJ';StoredProc1.ParamByName('EMP_NO').Value := 12;StoredProc1.ParamByName('PROJ_ID').Value := 'VBASE';StoredProc1.Prepare;StoredProc1.ExecProc;Je¿eli posiadasz Delphi w wersji Professional lub Client/Server mo¿eszprzetestowaæ powy¿szy kod wykonuj¹c nastêpuj¹ce kroki:Umieœæ w formularzu komponent StoredProc i ustaw jego w³aœciwoœæ DatabaseNamena IBLOCAL.[5 Musi byæ uruchomiony lokalny serwer InterBase (przyp.red.)]Dodaj przycisk do formularza i kliknij na nim dwukrotnie, aby utworzyæ jegoprocedurê zdarzeniow¹ (dla zdarzenia OnClick); w jej wnêtrzu umieœæ kodprzedstawiony powy¿ej.Dodaj komponent Table do formularza, ustaw jego w³aœciwoœæ DatabaseName naIBLOCAL, a w³aœciwoœæ TableName na EMPLOYEE_PROJECT.Umieœæ w formularzukomponenty DBGrid i DataSource i powi¹¿ je z dodan¹ przed chwil¹ tabel¹.Ustaww³aœciwoœæ Active tabeli na wartoœæ True.Dziêki temu bêdziesz móg³ zobaczyæzmiany wprowadzone do tabeli.Na koñcu kodu.który dodany zosta³ w punkcie trzecim, dodaj nastêpuj¹c¹ liniêkodu:Table1.Refresh;Teraz uruchom program.Kiedy klikniesz na przycisku, do tabeli dodany zostanienowy rekord z identyfikatorem pracownika (EMP_NO) równym 12 i identyfikatoremprojektu (PROJ_ID) równym VBASE.Zamknij program.Zmodyfikuj kod, tak abyidentyfikator pracownika by³ równy 10 i ponownie uruchom aplikacjê.Tym razemprocedura zapamiêtana zwróci komunikat informuj¹cy i¿ wybrany numer pracownikajest niepoprawny.B³¹d wynika z tego, i¿ procedura ADD_EMP_PROJ sprawdza danewejœciowe – i nie znajduje pracownika o numerze 10
[ Pobierz całość w formacie PDF ]