do ÂściÂągnięcia > pobieranie > ebook > pdf > download

[ Pobierz całość w formacie PDF ]
.Parametrw wyra¿eniu SQL przypomina w du¿ym stopniu zmienn¹ jêzyka Object Pascal.Wystêpuj¹cy w wyra¿eniu parametr jest poprzedzony znakiem dwukropka.WeŸmy dlaprzyk³adu nastêpuj¹ce wyra¿enie:select * from country where name = :Param1Parametr w powy¿szym zapytaniu nosi nazwê Param1; podczas realizacji zapytaniazostanie on zast¹piony konkretn¹ wartoœci¹, przechowywan¹ pod w³aœciwoœci¹Params:Query1.SQL.Add('select * from country where Name = :Param1');Query1.ParamByName('Param1').AsString := 'Brazil';Query1.Open;W³aœciwoœæ Params mo¿na ustawiaæ zarówno na etapie projektowania, jak i wczasie wykonania programu.W powy¿szym przyk³adzie wykorzystano metodêParamByName wyodrêbniaj¹c¹ okreœlony parametr na podstawie jego nazwy( tu:Param1); istnieje te¿ drugi sposób, oparty na kolejnym indeksie parametru wramach w³aœciwoœci Params, na przyk³ad poni¿sze przypisanieQuery1.Params[0].AsString := 'Brazil';odnosi siê do pierwszego parametru (parametry indeksowane s¹ pocz¹wszy odzera).Jako ¿e o wiele ³atwiej pamiêta siê nazwy mnemotechniczne ni¿bezwzglêdne numery, sposób ten jest zdecydowanie mniej wygodny, podatny nab³êdy i wra¿liwy na reorganizacjê w³aœciwoœci Params.Nie wszystkie elementy zapytañ SQL mog¹ byæ parametryzowane – serwery SQL niepozwalaj¹ na przyk³ad stosowania parametru dla nazwy tabeli.WeŸmy pod uwagênastêpuj¹ce zapytanie SQL:select * from :TableNameZapytanie to zostanie uznane za b³êdne, gdy¿ parametr znajduje siê w miejscu, wktórym spodziewana jest nazwa tabeli.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œæ Database­Namena 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 [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • klimatyzatory.htw.pl