name

Il nome (facoltativamente qualificato dallo schema) della procedura da creare.

argmode

La modalità di un argomento:IN,INOUT, oVARIADIC. Se omesso, il valore predefinito è IN. (OUT gli argomenti non sono attualmente supportati per le procedure. Utilizzare invece INOUT.)

argname

Il nome di un argomento.,

argtype

Il tipo di dati degli argomenti della procedura(facoltativamente qualificati dallo schema), se presenti. I tipi di argomenti possono essere di tipo base, composito o di dominio oppure possono fare riferimento al tipo di colonna di una tabella.

A seconda del linguaggio di implementazione potrebbe anche essere consentito specificare “pseudo-tipi” come cstring. Gli pseudo-tipi indicano che il tipo di argomento effettivo è specificato in modo incompleto o al di fuori del set di tipi di dati SQL ordinari.

Al tipo di colonna si fa riferimento scrivendo table_name.,column_name%TYPE . L’utilizzo di questa funzione può talvolta aiutare a rendere una procedura indipendente dalle modifiche alla definizione di una tabella.

default_expr

Un’espressione da utilizzare come valore predefinito se il parametro non è specificato. L’espressione deve essere coercibile al tipo di argomento del parametro. Tutti i parametri di input che seguono un parametro con un valore predefinito devono avere anche valori predefiniti.

lang_name

Il nome della lingua in cui è implementata la procedura., Può esseresql,c,internal, o il nome di un linguaggio procedurale definito dall’utente, ad esempioplpgsql. Racchiudere il nome tra virgolette singole è deprecato e richiede il caso corrispondente.

TRANSFORM { FOR TYPE type_name}}

Elenchi che trasformano una chiamata alla procedura dovrebbe applicarsi. Trasforma convertire tra tipi SQL e tipi di dati specifici della lingua; vedere CREA TRASFORMAZIONE. Le implementazioni del linguaggio procedurale di solito hanno una conoscenza hardcoded dei tipi incorporati, quindi non è necessario elencarli qui., Se un’implementazione del linguaggio procedurale non sa come gestire un tipo e non viene fornita alcuna trasformazione, tornerà a un comportamento predefinito per la conversione dei tipi di dati, ma ciò dipende dall’implementazione.

SECURITY INVOKER
SECURITY DEFINER

SECURITY INVOKER indica che la procedura deve essere eseguita con i privilegi dell’utente che la chiama. Questo è il valore predefinito. SECURITY DEFINER specifica che la procedura deve essere eseguita con i privilegi dell’utente che la possiede.,

La parola chiave EXTERNAL è consentita per la conformità SQL, ma è facoltativa poiché, a differenza di SQL, questa funzione si applica a tutte le procedure non solo a quelle esterne.

ASECURITY DEFINER La procedura non può eseguire istruzioni di controllo delle transazioni (ad esempio,COMMIT e ROLLBACK, a seconda della lingua).,

configuration_parameter
value

La clausolaSET fa sì che il parametro di configurazione specificato venga impostato sul valore specificato quando viene immessa la procedura e quindi ripristinato al valore precedente quando la procedura termina. SET FROM CURRENT salva il valore del parametro corrente quandoCREATE PROCEDURE viene eseguito come valore da applicare quando viene immessa la procedura.,

Se una clausolaSET è collegata a una procedura, gli effetti di un comandoSET LOCAL eseguito all’interno della procedura per la stessa variabile sono limitati alla procedura: il valore precedente del parametro di configurazione viene ancora ripristinato all’uscita della procedura., Tuttavia, un normale comando SET (senza LOCAL) sovrascrive la clausola SET, proprio come farebbe per un precedente comando SET LOCAL: gli effetti di tale comando persisteranno dopo l’uscita della procedura, a meno che la transazione corrente viene ripristinata.

Se una clausola SET è collegata a una procedura, tale procedura non può eseguire istruzioni di controllo delle transazioni (ad esempio, COMMIT e ROLLBACK, a seconda della lingua).,

Vedere SET e Capitolo 19 per ulteriori informazioni sui nomi e sui valori dei parametri consentiti.

definition

Una costante di stringa che definisce la procedura; il significato dipende dalla lingua. Può essere un nome di procedura interno, il percorso di un file oggetto, un comando SQL o un testo in un linguaggio procedurale.

È spesso utile usare la citazione in dollari (vedere Sezione 4.1.2.4) per scrivere la stringa di definizione della procedura, piuttosto che la normale sintassi delle virgolette singole. Senza quotare in dollari, eventuali virgolette singole o barre rovesciate nella definizione della procedura devono essere sfuggite raddoppiandole.,

obj_file,link_symbol

Questa forma della clausolaAS viene utilizzata per procedure in linguaggio C caricabili dinamicamente quando il nome della procedura nel codice sorgente del linguaggio C non è lo stesso del nome della procedura SQL. La stringa obj_file è il nome del file di libreria condivisa contenente la procedura C compilata e viene interpretata come per il comando LOAD. La stringa link_symbol è il simbolo di collegamento della procedura, ovvero il nome della procedura nel codice sorgente del linguaggio C., Se il simbolo del collegamento viene omesso, si presume che sia lo stesso del nome della procedura SQL definita.

Quando ripetuteCREATE PROCEDURE chiamate si riferiscono allo stesso file oggetto, il file viene caricato solo una volta per sessione. Per scaricare e ricaricare il file (forse durante lo sviluppo), avviare una nuova sessione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *