name

de naam (optioneel schema-gekwalificeerd) van de te maken procedure.

argmode

De modus van een argument: IN, INOUT, of VARIADIC. Indien weggelaten, is de standaard IN. (OUT argumenten worden momenteel niet ondersteund voor procedures. Gebruik INOUT in plaats daarvan.)

argname

de naam van een argument.,

argtype

het(de) gegevenstype (en) van de argumenten van de procedure (optioneel schema-gekwalificeerd), indien van toepassing. De argumenttypen kunnen base -, composite-of domeintypen zijn of verwijzen naar het type van een tabelkolom.

afhankelijk van de implementatietaal kan het ook toegestaan zijn om “pseudo-types” te specificeren, zoals cstring. Pseudo-types geven aan dat het werkelijke argumenttype ofwel onvolledig is opgegeven, ofwel buiten de set van gewone SQL-gegevenstypen.

naar het type kolom wordt verwezen door table_namete schrijven.,column_name % TYPE. Het gebruik van deze functie kan soms helpen om een procedure onafhankelijk te maken van wijzigingen in de definitie van een tabel.

default_expr

een uitdrukking die als standaardwaarde moet worden gebruikt als de parameter niet is gespecificeerd. De uitdrukking moet dwingend zijn voor het argumenttype van de parameter. Alle invoerparameters die een parameter met een standaardwaarde volgen, moeten ook standaardwaarden hebben.

lang_name

de naam van de taal waarin de procedure wordt geïmplementeerd., Het kan sql, c, internal, of de naam van een door de gebruiker gedefinieerde procedurele taal, bijvoorbeeld plpgsql. Het omsluiten van de naam in enkele aanhalingstekens is verouderd en vereist matching case.

TRANSFORM { FOR TYPE type_name}}

lijsten die een oproep omzetten in de procedure moeten van toepassing zijn. Transformaties converteren tussen SQL-typen en taalspecifieke gegevenstypen; zie transformeren maken. Procedurele taalimplementaties hebben meestal hardcoded kennis van de ingebouwde typen, dus die hoeven hier niet te worden vermeld., Als een procedurele taalimplementatie niet weet hoe een type moet worden behandeld en er geen transformatie wordt gegeven, zal het terugvallen op een standaardgedrag voor het converteren van gegevenstypen, maar dit hangt af van de implementatie.

SECURITY INVOKER
SECURITY DEFINER

SECURITY INVOKER geeft aan dat de procedure moet worden uitgevoerd met de rechten van de gebruiker die het aanroept. Dat is de standaard. SECURITY DEFINER geeft aan dat de procedure moet worden uitgevoerd met de privileges van de gebruiker die het bezit.,

het sleutelwoord EXTERNAL is toegestaan voor SQL-conformiteit, maar is optioneel omdat deze functie, in tegenstelling tot in SQL, niet alleen van toepassing is op externe procedures.

a SECURITY DEFINER procedure kan geen transactiecontroleverklaringen uitvoeren (bijvoorbeeld COMMIT en ROLLBACK, afhankelijk van de taal).,

configuration_parameter
value

de SET clausule zorgt ervoor dat de opgegeven configuratieparameter wordt ingesteld op de opgegeven waarde wanneer de procedure wordt ingevoerd, en vervolgens wordt hersteld naar de vorige waarde wanneer de procedure wordt afgesloten. SET FROM CURRENT slaat de waarde op van de parameter die actueel is wanneer CREATE PROCEDURE wordt uitgevoerd als de waarde die moet worden toegepast wanneer de procedure wordt ingevoerd.,

als eenSET clausule is toegevoegd aan een procedure, dan zijn de effecten van eenSET LOCAL commando uitgevoerd binnen de procedure voor dezelfde variabele beperkt tot de procedure: de waarde van de configuratie parameter is nog steeds hersteld bij het afsluiten van de procedure., Echter, een gewone SET commando (zonder LOCAL) overschrijft de SET clausule, net zoals het zou doen voor een vorige SET LOCAL commando: de effecten van een dergelijk Commando zullen blijven bestaan na het afsluiten van de procedure, tenzij de huidige transactie wordt teruggedraaid.

als eenSET clausule is toegevoegd aan een procedure, dan kan die procedure geen transactiecontroleverklaringen uitvoeren (bijvoorbeeldCOMMIT enROLLBACK, afhankelijk van de taal).,

zie SET en hoofdstuk 19 voor meer informatie over toegestane parameternamen en waarden.

definition

een stringconstante die de procedure definieert; de Betekenis hangt af van de taal. Het kan een interne procedure naam, het pad naar een object bestand, een SQL commando, of tekst in een procedurele taal.

Het is vaak nuttig om dollarcitaten te gebruiken (zie paragraaf 4.1.2.4) om de procedure definitie string te schrijven, in plaats van de normale single quote syntaxis. Zonder dollarcitaten moeten afzonderlijke citaten of backslashes in de proceduredefinitie worden vermeden door ze te verdubbelen.,

obj_file, link_symbol

deze vorm van de AS clausule wordt gebruikt voor dynamisch laadbare C-taalprocedures wanneer de naam van de procedure in de C-taalbroncode niet dezelfde is als de naam van de SQL-procedure. De string obj_file is de naam van het gedeelde bibliotheekbestand dat de gecompileerde C-procedure bevat, en wordt geïnterpreteerd als voor het LOAD-Commando. De tekenreeks link_symbol is het verbindingssymbool van de procedure, dat wil zeggen de naam van de procedure in de broncode van de taal C., Als het koppelingssymbool wordt weggelaten, wordt ervan uitgegaan dat het hetzelfde is als de naam van de SQL-procedure die wordt gedefinieerd.

bij herhaalde CREATE PROCEDURE aanroepen verwijzen naar hetzelfde objectbestand, wordt het bestand slechts één keer per sessie geladen. Om het bestand te lossen en te herladen (misschien tijdens de ontwikkeling), start je een nieuwe sessie.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *