name

numele (opțional schema-calificat) a procedurii pentru a crea.

argmode

mod de un argument: IN, INOUT sau VARIADIC. Dacă este omisă, valoarea implicită este IN. (OUT argumentele nu sunt acceptate în prezent pentru proceduri. Utilizați INOUT în schimb.)

argname

numele unui argument.,

argtype

tipul(tipurile) de date ale argumentelor procedurii (opțional calificate prin schemă), dacă există. Tipurile de argument pot fi tipuri de bază, compozit sau domeniu sau pot face referire la tipul unei coloane de tabel.

în funcție de limbajul de implementare ar putea fi, de asemenea, permis să specificați „pseudo-tipuri”, cum ar ficstring. Pseudo-tipurile indică faptul că tipul de argument real este fie specificat incomplet, fie în afara setului de tipuri de date SQL obișnuite.

tipul unei coloane se face referire prin scrierea table_name.,column_name%TYPE. Utilizarea acestei funcții poate ajuta uneori să facă o procedură independentă de modificările definiției unui tabel.

default_expr

o expresie care va fi utilizată ca valoare implicită dacă parametrul nu este specificat. Expresia trebuie să fie coercibilă pentru tipul de argument al parametrului. Toți parametrii de intrare care urmează unui parametru cu o valoare implicită trebuie să aibă și valori implicite.

lang_name

numele limbii în care este implementată procedura., Acesta poate fi sql, c, internal sau numele de utilizator definite de limbaj procedural, de exemplu, plpgsql. Închiderea numelui în ghilimele unice este depreciată și necesită caz de potrivire.

TRANSFORM { FOR TYPE type_name}}

ar trebui să se aplice listele care transformă un apel la procedură. Transformă conversia între tipurile SQL și tipurile de date specifice limbajului; consultați Creare transformare. Implementările limbajului Procedural au, de obicei, cunoștințe hardcodate despre tipurile încorporate, astfel încât acestea nu trebuie să fie listate aici., Dacă o implementare a limbajului procedural nu știe cum să gestioneze un tip și nu este furnizată nicio transformare, aceasta va reveni la un comportament implicit pentru Conversia tipurilor de date, dar acest lucru depinde de implementare.

SECURITY INVOKER
SECURITY DEFINER

SECURITY INVOKER indică faptul că procedura este de a fi executat cu privilegiile utilizatorului care solicită aceasta. Aceasta este implicit. SECURITY DEFINER specifică faptul că procedura trebuie executată cu privilegiile utilizatorului care o deține.,

cuvântul cheie EXTERNAL este permis pentru conformitatea SQL, dar este opțional, deoarece, spre deosebire de SQL, această caracteristică se aplică tuturor procedurilor nu numai celor externe.

SECURITY DEFINER procedură nu poate executa tranzacția de control al declarațiilor (de exemplu, COMMIT și ROLLBACK, în funcție de limbă).,

configuration_parameter
value

SET clauza cauze specificat parametru de configurare pentru a fi setat la valoarea specificată, atunci când procedura este înscris, și apoi restaurat sale anterioare, atunci când procedura de ieșiri. SET FROM CURRENT salvează valoarea parametrului, care este actual atunci când CREATE PROCEDURE este executat ca valoarea să fie aplicate atunci când procedura este înscris.,

Dacă un SET clauză este atașată la o procedură, atunci efectele unui SET LOCAL comanda executat în interiorul procedură pentru aceeași variabilă sunt limitate la procedura: parametrul de configurare prealabilă a valorii este încă restabilită la procedura de ieșire., Cu toate acestea, un obișnuit SET comandă (fără LOCAL) suprascrie SET clauza de mult ca s-ar face pentru un anterioară SET LOCAL command: efectele unei astfel de comandă va persista și după procedura de ieșire, cu excepția cazului în tranzacția curentă este derulată înapoi.

Dacă un SET clauză este atașată la o procedură, atunci această procedură nu poate executa tranzacția de control al declarațiilor (de exemplu, COMMIT și ROLLBACK, în funcție de limbă).,

consultați SET și Capitolul 19 pentru mai multe informații despre numele și valorile parametrilor permise.

definition

o constantă șir care definește procedura; sensul depinde de limbă. Poate fi un nume de procedură internă, calea către un fișier obiect, o comandă SQL sau un text într-un limbaj procedural.

este adesea util să folosiți cotația dollar (vezi secțiunea 4.1.2.4) pentru a scrie șirul de definiție a procedurii, mai degrabă decât sintaxa normală a citării unice. Fără a cita Dolar, orice citate unice sau backslash-uri în definiția procedurii trebuie să fie scăpat prin dublarea lor.,

obj_file, link_symbol

Această formă de AS clauză este folosit pentru dinamică de încărcare C limba proceduri atunci când procedura de nume în limbajul C codul sursă nu este la fel ca numele de procedura SQL. Șirul obj_file este numele fișierului bibliotecii partajate care conține procedura c compilată și este interpretat ca pentru comanda de încărcare. Șirul link_symbol este simbolul de legătură al procedurii, adică numele procedurii în codul sursă al limbii C., Dacă simbolul de legătură este omis, se presupune că este același cu numele procedurii SQL definite.

când se repetăCREATE PROCEDURE apelurile se referă la același fișier obiect, fișierul este încărcat o singură dată pe sesiune. Pentru a descărca și reîncărca fișierul (poate în timpul dezvoltării), începeți o nouă sesiune.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *