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!!!