Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: procedury
Forum PHP.pl > Forum > Bazy danych > Oracle
darop
Mam taki problem, napisałem pakiet, w którym umieszczam procedure, jednym z zadań jakie ma robić ta procedura jest ustawienie nowej wartośći sekwencji za pomocą polecania alter sequence(umieszczam tu skróconą wersję pakietu)
  1. CREATE OR REPLACE PACKAGE p_licznik AS PROCEDURE proc_licznik;
  2.  
  3. END p_licznik;
  4. /
  5.  
  6. CREATE OR REPLACE PACKAGE BODY p_licznik IS
  7.  
  8. PROCEDURE proc_licznik IS
  9.  
  10. begin ALTER SEQUENCE licz increment BY -14;
  11. DBMS_OUTPUT.PUT_LINE('LICZNIK set zero');
  12. end;
  13.  
  14. END p_licznik;
  15. /

polecenie alter wywołuje błąd podczas kompilacji pakietu
Cytat
Package Body created with compilation errors.

po jego usunięciu pakiet kompiluje sie bez problemów, zauważyłem też, że nie moge używać wewnątrz procedury poleceń drop i create.
Czy ktoś wie może dlaczego i jak sobie z tym poradzić??
Będe wdzięczny za każdą rade

Prosze używać odpowiedniego bbcode.
Poprawiam
----
nospor
NoiseMc
Nie jestem pewien nigdy nie używałem Oracle, ale na wykładach z MSSQL mówili, że w procedurach nie można umieszczać poleceń Data Definition Language.
Synaps
W PL/SQL nie można jawnie wykonać poleceń DROP, CREATE, ALTER.
Sposobem na obejście tego 'ograniczenia' jest wykorzystanie składni EXECUTE IMMEDIATE, przykładowo można to zrobić tak:

  1. EXECUTE IMMEDIATE ' ALTER SEQUENCE licz increment by -14';


edit : typos ;-)
darop
Dziękuje bardzo właśnie o to chodziło
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.