sql >> Databáze >  >> RDS >> Oracle

Co jsou uložené procedury PL/SQL v databázi Oracle

Podobně jako u funkcí PL/SQL je uložená procedura samostatná podprogram, který je určen k provádění některých specifických úkolů. Podobně jako funkce se procedury nazývají bloky PL/SQL, takže je lze znovu použít, protože jsou uloženy v databázi jako databázový objekt. Ale na rozdíl od funkcí PL/SQL nevrací uložená procedura žádnou hodnotu .

Syntaxe uložených procedur PL/SQL

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

Výše uvedená syntaxe uložené procedury PL/SQL je do značné míry podobná syntaxi funkcí PL/SQL, kterou jsme viděli v posledním tutoriálu PL/SQL. Kromě dvou věcí:

  1. Neexistuje žádná klauzule návratu.

Základní rozdíl mezi funkcí PL/SQL a uloženou procedurou spočívá v tom, že na rozdíl od funkcí uložená procedura nevrací žádnou hodnotu.

  1. Ustanovení AUTHID.

Klauzule AUTHID se používá k nastavení modelu oprávnění pro procedury PL/SQL. Tato klauzule má dva příznaky.

  1. DEFINOVAT a
  2. CURRENT_USER

Protože tato klauzule je volitelná, v případě, že nepoužíváte klauzuli AUTHID, Oracle Engine za vás standardně nastaví oprávnění (AUTHID) na DEFINER. Nyní vás jistě zajímá, jaká jsou tato práva DEFINER a CURRENT_USER?

DEFINER vpravo: Definující právo je výchozí právo přidělené proceduře věšteckým enginem. Toto právo znamená, že kdokoli s oprávněním k provádění postupu se chová, jako by byl vlastníkem schématu, ve kterém je oprávnění vytvořeno.

CURRENT_USER právo: Nastavení úrovně oprávnění uložené procedury na právo aktuálního uživatele přepíše výchozí právo, které je definováno, a změní ho na práva vyvolávače.

Oprávnění k právu vyvolávače znamená, že zavoláte proceduru, která má jednat s vašimi lokálními daty, a vyžaduje, abyste replikovali datové objekty v jakémkoli zúčastněném schématu.

Několik dalších bodů o uložené proceduře

  • Můžete definovat proceduru s formálními parametry nebo bez nich.
  • Parametr může být buď průchozí hodnotou nebo průchozí reference .
  • Pokud neurčíte režim parametru, bude procedura předávací procedurou, protože používá výchozí režim IN.

To je vše v Úvodu do uložených procedur PL/SQL. Předpokládám, že i vy budete rádi číst tyto níže zmíněné blogy. Všechny blogy jsou psány s ohledem na Job Interview a Oracle Database Certification, nezapomeňte je zkontrolovat.

  • Rozdíly mezi funkcí PL/SQL a uloženými procedurami PL/SQL?
  • Co jsou režimy parametrů ve funkcích a procedurách PL/SQL?
  • Co jsou formální a skutečné parametry?

Vždy pamatujte:Můžete pomáhat ostatním v učení a podporovat mě a můj kanál i tento blog tím, že jej budete sdílet se svými přáteli na svých sociálních sítích.

To je vše. Děkuji za přečtení. Opatrujte se a mějte skvělý den!


  1. Odstraňte nebo ořízněte prvních nebo posledních několik znaků v databázi MySQL pomocí SQL

  2. PRAGMA table_list v SQLite

  3. Jak najít neexistující data z jiné tabulky pomocí JOIN?

  4. Jak převést všechny tabulky z MyISAM do InnoDB?