sql >> Database teknologi >  >> RDS >> Oracle

Hvad er PL/SQL-lagrede procedurer i Oracle-databasen

I lighed med PL/SQL-funktioner er en lagret procedure en selvstændig underprogram, der er beregnet til at udføre nogle specifikke opgaver. Ligesom funktioner, er procedurer navngivet PL/SQL-blokke, så de kan genbruges, fordi de er gemt i databasen som et databaseobjekt. Men i modsætning til PL/SQL-funktioner returnerer en lagret procedure ingen værdi .

Syntaks for PL/SQL-lagrede procedurer

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

Ovenstående syntaks for PL/SQL-lagrede procedure ligner stort set syntaksen for PL/SQL-funktioner, som vi så i den sidste PL/SQL-tutorial. Bortset fra to ting:

  1. Der er ingen returklausul.

En kerneforskel mellem en PL/SQL-funktion og en lagret procedure er, at i modsætning til funktioner returnerer en lagret procedure ingen værdi.

  1. AUTHID-klausul.

AUTHID-klausulen bruges til at indstille autorisationsmodellen for PL/SQL-procedurerne. Denne klausul har to flag.

  1. DEFINER og
  2. CURRENT_USER

Da denne klausul er valgfri, vil Oracle Engine derfor, hvis du ikke bruger AUTHID-klausulen, indstille autoriteten (AUTHID) til DEFINER som standard for dig. Nu må du undre dig over, hvad disse DEFINER- og CURRENT_USER-rettigheder er?

DEFINER højre: Definer right er standardretten, der er tildelt proceduren af ​​oracle engine. Denne ret betyder, at alle med Execution Privilege på proceduren opfører sig, som om de er ejeren af ​​det skema, hvori privilegiet er oprettet.

CURRENT_USER højre: Indstilling af autorisationsniveauet for en lagret procedure til den aktuelle_bruger-ret tilsidesætter standardretten, som er definerer, og ændrer den til invoker-rettighederne.

Invoker right-autoritet betyder, at du kalder proceduren for at handle på dine lokale data, og det kræver, at du replikerer dataobjekter i ethvert deltagende skema.

Nogle ekstra punkter om lagret procedure

  • Du kan definere en procedure med eller uden formelle parametre.
  • En parameter kan enten være pass-by-value eller pass-by-reference .
  • En procedure vil være en pass-by-value-procedure, når du ikke angiver parametertilstanden, fordi den bruger standard IN-tilstand.

Det er det på Introduktion til PL/SQL Stored Procedures. Jeg gætter på, at du også vil nyde at læse disse nedenstående blogs. Alle blogs er skrevet ved at tage jobsamtale og Oracle Database Certification i tankerne, sørg for at tjekke dem ud.

  • Forskelle mellem PL/SQL-funktion og PL/SQL-lagrede procedurer?
  • Hvad er parametertilstande i PL/SQL-funktioner og -procedurer?
  • Hvad er formelle og faktiske parametre?

Husk altid:Du kan hjælpe andre med at lære og støtte mig og min kanal samt denne blog ved at dele den med dine venner på dine sociale medier.

Det er det gutter. Tak fordi du læste med. Pas på og hav en god dag!


  1. dbms_output.put_line

  2. MySQL:Kan ikke oprette tabel (fejlnr:150)

  3. WordPress MySQL SQL-forespørgselsfejl i WPDB-klassen

  4. Hvordan CONCAT()-funktionen fungerer i PostgreSQL