DavidPL
3.03.2005, 15:14:35
Witam,
Postawiłem sobie za cel skonstruowanie metody (jako element większej klasy do obsługi Oracla) którą mógłbym zrobić "wszystko".
Funkcja na wejście ma dostać zapytania SQL (SELECT, UPDATE lub DELETE), natomiast na wyjściu chciałbym mieć:
- jeśli zapytanie wykonało się poprawnie:
- tablicę ze zwróconymi danymi dla SELECT
- TRUE dla UPDATE i DELETE
- jeśli zapytanie nie wykonało się:
- FALSE dla SELECT, UPDATE i DELETE
Sprawa wygląda prosto, ale nie mogę dojść w jaki sposób rozpoznać typ wysłanego zapytania czyli określić czy zapytanie zwraca wyniki czy też nie.
Za wszystkie pomysły i sugestie będę wdzięczny...
dr_bonzo
3.03.2005, 15:39:06
To proste: rozpoznasz po typie zapytania -- tzn czy zawiera 'SELECT', 'UPDATE' ...
DavidPL
3.03.2005, 15:48:12
A nie ma innego sposobu jak sprawdzanie zapytania SQL czy zawiera jedno z tych słów... Jakaś funkcja OCI8 lub coś w tym stylu?
Nie zauważyłem w manualu, ale może coś mam nie tak z oczami
orson
3.03.2005, 16:16:47
witam ...
ja uzylem najprostszej metody na jaka wpadlem ... trim na zapytaniu a potem sprawdzasz pierwsze 2 litery zapytania [tak na wszelki] ... se to select, up to update itp ... prosto, szybko i bez problemu ...
pozdrawiam
DavidPL
4.03.2005, 09:56:36
Witam,
Znalazłem rozwiązanie troszkę moim zdaniem lepsze niż sprawdzanie typu zapytania. Wygląda ono tak:
oci_num_fields()
Jeśli zapytanie zwraca wyniki zwraca też jakieś pola (kolumny), a funkcja zwraca ilość tych pól, jeśli zapytanie nie zwraca żadnych wyników ilość pól jest równa zero.
Żeby nie było nie domówień, jeśli zapytanie typu SELECT nie zwróci żadnych danych z powodu niespełnienia warunku zapytania ilość pól jest zwracana poprawnie, czyli jest dodatnia.
SongoQ
4.03.2005, 10:11:14
Pomysl jest bardzo dobry i latwo bedzie z impementacja czegos takiego.
Zastanawia mnie jeszcze kwestia obslugi bledow zwracanych przez ORACLE.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.