Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czym są procedury składowane PL/SQL w bazie danych Oracle

Podobnie jak w przypadku funkcji PL/SQL, procedura składowana jest samodzielną podprogram przeznaczony do wykonywania określonych zadań. Podobnie jak funkcje, procedury są nazywane blokami PL/SQL, dzięki czemu mogą być ponownie użyte, ponieważ są przechowywane w bazie danych jako obiekt bazy danych. Ale w przeciwieństwie do funkcji PL/SQL procedura składowana nie zwraca żadnej wartości .

Składnia procedur składowanych PL/SQL

CREATE [OR REPLACE] PROCEDURE pro_name (Parameter – List)
IS [AUTHID 	DEFINER | CURRENT_USER]
	Declare statements
BEGIN
	Executable statements 
END procedure name;
/ 

Powyższa składnia procedury składowanej PL/SQL jest bardzo podobna do składni funkcji PL/SQL, którą widzieliśmy w poprzednim samouczku dotyczącym PL/SQL. Z wyjątkiem dwóch rzeczy:

  1. Nie ma klauzuli zwrotu.

Podstawowa różnica między funkcją PL/SQL a procedurą składowaną polega na tym, że w przeciwieństwie do funkcji procedura składowana nie zwraca żadnej wartości.

  1. Klauzula AUTHID.

Klauzula AUTHID służy do ustawiania modelu uprawnień dla procedur PL/SQL. Ta klauzula ma dwie flagi.

  1. DEFINIERA i
  2. CURRENT_USER

Ponieważ klauzula ta jest opcjonalna, w przypadku, gdy nie używasz klauzuli AUTHID, Oracle Engine domyślnie ustawi dla Ciebie uprawnienie (AUTHID) na DEFINER. Teraz musisz się zastanawiać, jakie są te prawa DEFINER i CURRENT_USER?

DEFINIER po prawej: Prawo definiujące to domyślne prawo przypisane do procedury przez silnik Oracle. To prawo oznacza, że ​​każdy, kto ma uprawnienie do wykonywania w procedurze, zachowuje się tak, jakby był właścicielem schematu, w którym utworzono uprawnienie.

CURRENT_USER prawo: Ustawienie poziomu uprawnień procedury składowanej na uprawnienie current_user zastępuje uprawnienie domyślne, które jest definiującym i zmienia je na uprawnienia wywołującego.

Uprawnienie osoby wywołującej oznacza, że ​​wywołujesz procedurę do działania na danych lokalnych i wymaga to replikacji obiektów danych w dowolnym uczestniczącym schemacie.

Kilka dodatkowych punktów dotyczących zapisanej procedury

  • Możesz zdefiniować procedurę z lub bez parametrów formalnych.
  • Parametrem może być wartość przekazana przez wartość lub pass-by-reference .
  • Procedura będzie procedurą przekazywania przez wartość, gdy nie określisz trybu parametrów, ponieważ używa ona domyślnego trybu IN.

To tyle we wprowadzeniu do procedur składowanych PL/SQL. Myślę, że spodoba ci się również czytanie tych poniżej wymienionych blogów. Wszystkie blogi są pisane z myślą o rozmowie kwalifikacyjnej i certyfikacji bazy danych Oracle, koniecznie sprawdź je.

  • Różnice między funkcją PL/SQL a procedurami składowanymi PL/SQL?
  • Co to są tryby parametrów w funkcjach i procedurach PL/SQL?
  • Co to są parametry formalne i rzeczywiste?

Zawsze pamiętaj:możesz pomóc innym w nauce i wesprzeć mnie, mój kanał, a także ten blog, dzieląc się nim ze znajomymi w mediach społecznościowych.

To wszystko chłopaki. Dziękuje za przeczytanie. Uważaj i życzę miłego dnia!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązać problem ORA-011033:Trwa inicjowanie lub wyłączanie ORACLE

  2. Spring Batch ORA-08177:nie można zserializować dostępu do tej transakcji podczas uruchamiania pojedynczego zadania, poziom izolacji ZSERYLIZOWANY

  3. Odzyskiwanie bazy danych Oracle

  4. Ładowanie danych z pliku tekstowego do tabeli w Oracle

  5. Kiedy wywołuję PreparedStatement.cancel() w aplikacji JDBC, czy faktycznie zabija to w bazie danych Oracle?