![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 10.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cześć!
Mam problem z kursorami pod Oracle 9i. Otóż chce zrobic taką rzecz, która bedzie mi kasować jakieś obiekty stworzone w bazie np. table, które uzyskam po wypisaniu polecenia: "SELECT tname FROM tab;" Tak wygląda moja anonimowa deklaracja z wykorzystaniem kursora declare nazwa_tab varchar(30); cursor del is select tname from tab; begin open del; loop fetch del into nazwa_tab; exit when del%notfound; drop table nazwa_tab; dbms_output.put_line('Usunieto tabele '|| nazwa_tab); end loop; close del; end; / po wykonaniu której otrzymuję nastepujacy komunikat: BŁĄD w linii 12: ORA-06550: linia 12, kolumna 3: PLS-00103: Napotkano symbol "DROP" gdy oczekiwano jednego z następujących: begin case declare end exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge <a single-quoted SQL string> pipe No i własnie tu pojawia sie problem uzyciem polecenia DROP, nie wiem dlaczego Oracle nie przyjmuje go. Próbowałem umieścic to polecenie w dodatkowym bloku BEGIN ... END; ale tez nie pomogło. Po wyrzuceniu tej instrukcji wszytko działa poprawnie! Moje pytanie brzmi, co robię źle? ![]() w instrukcji "DROP TABLE nazwa_tab;" znajdującej się w deklaracji? ![]() Za wszytkie podpowiedzi, odpowiedzi i słowa krytyki dziekuję z góry!!! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 26.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
drop table nazwa_tab; Poprawne polecenie drop table to: drop table NAZWA_TABELI, gdzie nazwa tabeli nie może być zmienną, która zawiera nazwę tabeli, tylko nazwą tabeli pisaną wprost. Musisz inaczej rozwiązać ten problem.... -------------------- ________________________________________________________________________________
czy programiści używają jeszcze diagramów ? jeśli nie, to tylko zwykli koderzy są ;) |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 103 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
W PL/SQL nie można jawnie wykorzystywać DROP/ALTER itd. Aby uzyskać ten efekt należy użyć składni
-------------------- MySQL said:
You have an error in your SQL syntax near ' `sygnatura` VARCHAR, NOT NULL |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 10.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam ponownie!
Panie i Panowie czapki z głów ... Serdeczne dzięki Synaps ![]() ![]() Wprowadziłem kilka poprawek i teraz to działa tak jak to powinno być! declare nazwa_tab varchar2(30); cursor del_tab is select tname from tab where tabtype='TABLE'; begin open del_tab; loop fetch del_tab into nazwa_tab; exit when del_tab%notfound; EXECUTE IMMEDIATE ' DROP TABLE ' || nazwa_tab || ' cascade constraints'; dbms_output.put_line('Usunieto tabele '|| nazwa_tab); end loop; close del_tab; end; / |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.07.2025 - 22:38 |