Jak rozpoznać, czy używany jest pakiet, procedura lub funkcja PL/SQL? Czy istnieje tabela lub widok Oracle zawierający statystyki dotyczące pakietu, procedury lub użycia funkcji PL/SQL?Jak rozpoznać, czy używany jest pakiet, procedura lub funkcja PL/SQL?
Odpowiedz
Nie domyślnie. Można jednak użyć funkcji kontroli bazy danych Oracle. Na Ask Tom jest długi wątek na temat kontroli wywołań procedur!
Możesz sprawdzić, czy obiekt ma jakieś zależności, wysyłając zapytanie do tabeli DBA_DEPENDENCIES.
SELECT OWNER,
NAME,
TYPE
FROM SYS.DBA_DEPENDENCIES
WHERE REFERENCED_OWNER = '<your object owner>'
AND REFERENCED_NAME = '<your object name>'
AND REFERENCED_TYPE IN ('PACKAGE', 'PROCEDURE', 'FUNCTION');
To zapytanie zwróci wszystkie zależności w kodzie przechowywanym wewnątrz samej instancji Oracle.
Nie ujawnia, czy jakikolwiek obiekt jest wywoływany poza instancją.
Nie widzę, jak to odpowiada na pytanie, procedura może nie mieć zależności, ale jest wywoływana bezpośrednio z następnej warstwy, a inna może mieć pewne zależności, ale nie jest w ogóle wywoływana ani inne funkcje, które mogą wywoływać to, więc nigdy "używane". Możesz rozwinąć swoją odpowiedź, aby pokazać, jak rozwiązuje ona to pytanie. Nie odrzucam tego, ponieważ jesteś nowy na stronie, BTW, witam w SO! – jachguate
Pierwotne pytanie nie wspomniało o tym, czy szukali dzwoniących w innej warstwie. Nie byłoby możliwe, aby sama instancja Oracle wiedziała, które warstwy poza instancją wywoływały określoną funkcję. Moja odpowiedź polegała po prostu na pokazaniu zależności w kodzie przechowywanym w instancji Oracle. – JordanBean
Jeśli jesteś na Oracle 11 (R2?), Dałbym PL/Scope
szansę.
Dokument stwierdza: PL/Scope jest narzędziem opartym na kompilatorze, które zbiera dane o identyfikatorach w kodzie źródłowym PL/SQL w czasie kompilacji programu programowego i udostępnia je w widokach słowników danych statycznych. Zebrane dane zawierają informacje o typach identyfikatorów, zwyczajach (deklaracja, definicja, odwołanie, wywołanie, przypisanie) oraz lokalizacji każdego użycia w kodzie źródłowym.
PL/Zakres umożliwia rozwój silnych i skutecznych PL/Zakres przeglądarek kodu źródłowego, które zwiększają PL/SQL produktywność programistów poprzez zminimalizowanie czasu przeglądania i zrozumienie kodu źródłowego.
można znaleźć więcej na ten temat na http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_plscope.htm#g1010526
PL/Zakres nie pomoże sytuacji PO - chcą wiedzieć, jak często funkcja lub procedura jest * faktycznie * używana, a nie * potencjalnie * używana. –
Można również znaleźć PL/SQL pakietu oprzyrządowania ILO przydatnych dla co próbujesz zrobić.
Możesz także spróbować zapytań USER/ALL_source:
SELECT * FROM all_source
where UPPER(TEXT) like UPPER('%procedure_name%')
lub
SELECT * FROM all_source
where UPPER(TEXT) like UPPER('%package.function_name%')
Musisz ignorować odniesienia własny, ale to powinno być łatwe do wykrycia.
Musisz również sprawdzić "widok" źródła od użytkownika/all_views. Zobacz inne pytanie dotyczące sprawdzania źródła widoku.
można również sprawdzić, czy opakowanie lub top funkcja Poziom/procedura jest stosowana z
select * from all_dependencies
where referenced_name like '%PACKAGE_NAME%';
NB: przełączyć użytk._ z all_/dba_ co potrzebne
jeśli są specjalnie szuka funkcji zażądanych następnie inną opcją jest kompilator kod z ostrzeżeniami włączony, a następnie poszukać PLW-06002 i LPW-06006
exec DBMS_WARNING.add_warning_setting_cat('ALL','ENABLE','SESSION')
create or replace function x return number
as
procedure y is begin null; end;
begin
return 0;
return 1;
end;
show errors
Errors for FUNCTION X:
LINE/COL ERROR
-------- -----------------------------------------------------------------
1/1 PLW-05018: unit X omitted optional AUTHID clause; default value DEFINER used
3/1 PLW-06006: uncalled procedure "Y" is removed.
6/1 PLW-06002: Unreachable code
można użyć Editors jak ropucha.Będą bezpośrednio wymieniać zarówno obiekty, od których zależy twoja procedura, jak i obiekty, które odwołują się do twojej procedury.
- 1. funkcja przyrost plsql
- 2. Kiedy jest używany pakiet savedInstanceState?
- 3. Jak rozpoznać algorytm szyfrowania używany w szyfrogramie?
- 4. Który pakiet jest używany w Pythonie?
- 5. Funkcja Ada vs Procedura
- 6. Procedura lub funkcja 'xyz' ma zbyt wiele argumentów określonych
- 7. Procedura lub funkcja !!! ma zbyt wiele argumentów określonych
- 8. Procedura lub funkcja oczekuje parametru, który nie został dostarczony.
- 9. Procedura składowana lub kod
- 10. Czy jest to błąd lub funkcja ManagementScope?
- 11. Czy static_cast jest niewłaściwie używany?
- 12. Jak rozpoznać, czy macierz homograficzna jest akceptowalna, czy nie?
- 13. Sprawdź, czy funkcja lub metoda jest normalna lub asynchroniczna.
- 14. Android: jak rozpoznać, czy klawiatura jest wyświetlana, czy nie?
- 15. Android: sprawdź, czy GPS wyszukuje, naprawił lub nie jest używany
- 16. Czy trudno jest rozpoznać pomyślne odszyfrowanie?
- 17. Jak ustalić, czy kod jest wykonywany jako skrypt lub funkcja?
- 18. C# Zapisana procedura lub funkcja oczekuje parametru, który nie jest dostarczany
- 19. metoda vs funkcja vs procedura vs klasa?
- 20. Jak mogę wywołać funkcję sqlserver z VB.net (lub C#)? Czy jest jakaś składnia jak procedura przechowywana?
- 21. Czy GObject jest używany poza GNOME?
- 22. Jak określić, który obiekt JSON jest używany (Crockford's lub inny)?
- 23. Sprawdź, czy pakiet jest zainstalowany.
- 24. Jak rozpoznać zawartość bajtu [] jest jpeg?
- 25. Czy Microsoft Workflow Foundation jest naprawdę używany?
- 26. Jak rozpoznać, czy odwołanie do klasy jest interfejsem?
- 27. Jak rozpoznać, czy wyzwalacz jest włączony w PostgreSQL?
- 28. PLSQL - Upuść wszystkie obiekty bazy danych użytkownika
- 29. Czy CRC32 może być używany jako funkcja skrótu?
- 30. PLSQL JDBC: Jak uzyskać identyfikator ostatniego rzędu?
Upuść je i sprawdź, czy odbierasz połączenia od użytkowników? :-) –
Zdefiniuj "użycie", ponieważ może istnieć funkcja/proc/function, która jest rzadko używana - nie oznacza, że powinna zostać usunięta. –