[ Pobierz całość w formacie PDF ]
.W kwerendach SPT jedyn¹ informacj¹, jak¹przesy³asz poprzez sieæ, jest wyra¿enie SQL, a jedyn¹ jak¹ otrzymujesz jestwynik.Aby utworzyæ SPT, wykonaj nastêpuj¹ce czynnoœci:Utwórz now¹ kwerendê.Z menu Kwerenda wybierz Tylko SQL.Wybierz Przekazuj¹ca.W widoku SQL edytora kwerend (dostêpny tylko tryb projektowania) wybierz Widoki W³aœciwoœci.Wpisz ci¹g po³¹czeniowy ODBC do w³aœciwoœci Ci¹g po³¹czenia ODBC.Ci¹g ODBC powinien wygl¹daæ podobnie do takiego:ODBC;DSN=EmpExample;UID=SCOTT;PWD=tiger;DBQ=empexample;Mo¿esz skopiowaæ ci¹g z tabeli po³¹czonej.Wpisz wyra¿enie SQL.Przyk³adowe wyra¿enie SQL wygl¹da nastêpuj¹co:Select * from empW czasie wykonania, Access wysy³a to wyra¿enie SQL bezpoœrednio do Oracle'apoprzez po³¹czenie ODBC.Jet nie jest zaanga¿owany w jego wykonanie.Oracleodbiera to wyra¿enie i po wykonaniu odsy³a wynik (jeœli istnieje) do klienta.Niektóre sytuacje gdzie mog¹ byæ u¿yte SPT to:* Wykonanie wyra¿eñ SQL zmieniaj¹cych strukturê bazy.* Uzyskanie wybranych wierszy i kolumn z tabel Oracle'a.* Sprawdzenie iloœci wierszy zmienionych wyra¿eniem Update.* Dostarczenie Ÿród³a rekordów dla prostego formularza zwi¹zanegopokazuj¹cego ma³¹ iloœæ rekordów.* Utworzenie, zmiana i wykonanie widoków i procedur przechowywanych w Oracle'u.Powinieneœ zawsze sprawdziæ, czy zastosowanie kwerend SPT ulepszy Twoj¹aplikacjê.Okreœlanie w³aœciwoœci kwerend przekazuj¹cychGdy tworzysz kwerendê przekazuj¹c¹, musisz ustawiæ w³aœciwoœæ kwerendy, któraokreœla, czy zwraca ona rekordy, czy nie.Kwerendy, które wstawiaj¹, zmieniaj¹lub kasuj¹ rekordy, nie zwracaj¹ rekordów, natomiast kwerendy typu Selectzwykle to robi¹.Je¿eli nie ustawisz odpowiednio tej w³aœciwoœci, dostanieszkomunikat b³êdu.Sk³adnia kwerend przekazuj¹cychMusisz pisaæ wyra¿enia SQL zgodnie ze sk³adni¹ Oracle'a, która ró¿ni siêznacznie od sk³adni generowanej przez tabelkê QBE.Access 2000 obs³ugujedialekt SQL, który najbardziej odpowiada standardowi ANSI-92, lecz je¿eliu¿ywa³eœ SQL Accessa pocz¹wszy od wersji 1.1, przegl¹d ró¿nic pomo¿e Ciefektywnie u¿ywaæ bazy Oracle.Oracle nie wymaga zakañczania wyra¿enia œrednikiem, gdy tworzymy kwerendêprzekazywan¹, mimo ¿e jest on wymagany w trakcie wykonywania zapytañ zprogramu SQL Plus.Œrednik na koñcu wyra¿enia SQL spowoduje b³¹d.Nie mo¿na u¿ywaæ nawiasów kwadratowych do identyfikacji nazw tabel i kolumn.Ich u¿ycie spowoduje b³¹d.Mimo ¿e Access zmienia kropkê z SCOTT.EMP na podkreœlenie w SCOTT_EMP w trakcie³¹czenia tabeli, musisz u¿yæ separatora Oracle, którym jest kropka.Wielkoœæ literWyra¿enia SQL w Oracle'u mog¹ byæ pisane zarówno du¿ymi, jak i ma³ymi literamioprócz porównywanych w frazie Where wartoœci.Poni¿sze dwa wyra¿enia s¹ takiesame:Select eName, job FroM eMPSELECT ENAME, JOB FROM EMPTylko pierwsze z dwóch poni¿szych wyra¿eñ zwróci prawid³ow¹ wartoœæ:Select ename, job from EMP where JOB='MANAGER'Select ename, job from EMP where JOB='manager'Wyra¿enie SelectS³owo kluczowe Select dzia³a tak samo jak w Accesie.Select wskazuje bazieOracle, które pola (kolumny) zwróciæ jako wynik.Nazwy kolumn wymienione pos³owie Select musz¹ istnieæ w tabelach wymienionych w nastêpnej klauzuliFrom.SELECT ename, job, hiredate.Tabele lub widoki u¿yte w kwerendzie s¹ wymieniane w klauzuli From, identyczniejak w Accessie.Równie¿ identycznie jak w Accessie kolejnoœæ tabel w liœcie niewp³ywa na wynik zapytania.Select ename, job, hiredate FROM empKlauzula WHEREKlauzula Where sprawia wiêkszoœci programistom Accessa sporo problemów napocz¹tku pracy z baz¹ Oracle, poniewa¿ skupia siê tutaj wiêkszoœæ ró¿nicpomiêdzy SQL Accessa i SQL Oracle.W Oracle'u klauzula Where nie tylkoogranicza iloœæ rekordów zwracanych przez serwer, jak to jest w Accessie, aletak¿e definiuje zale¿noœci pomiêdzy tabelami i widokami u¿ytymi w zapytaniu.W tych przyk³adach znajomych dla wiêkszoœci programistów Accessa klauzula Whereogranicza rekordy w wyniku:Select * from Emp WHERE mng=7698Select * from EMP WHERE HIREDATE between '1/1/1990' and '1/1/1995'Select * from EMP WHERE ename like 'M%'Definiowanie zale¿noœciGdy w kwerendzie wystêpuje wiêcej ni¿ jedna tabela, klauzula Where w Oracle'udefiniuje zale¿noœci.SELECT emp.ename, dept.dnameFROM emp, deptWHERE (emp.deptno=dept.deptno) AND (emp.ename like 'M%')Pokazane powy¿ej wyra¿enie zwraca rekordy, które maj¹ te same wartoœci po obustronach relacji zdefiniowanej przez pola podane w klauzuli Where(emp.deptno=dept.deptno).Aby zwróciæ rekordy, które nie s¹ reprezentowane zobu stron relacji, musisz utworzyæ po³¹czenie typu outer join.W Oracle'upo³¹czenie takie tworzy siê poprzez wstawienie znaku (+) po tej stronierelacji, która bêdzie zwraca³a wartoœci null, gdy nie ma odpowiadaj¹cejwartoœci.Dobrze jest zapamiêtaæ, ¿e wstawia siê znak (+) po tej stronie, którazawieraæ bêdzie dodatkowe puste pozycje
[ Pobierz całość w formacie PDF ]