I comandi CALL ed EXEC[UTE [PROCEDURE]]

Usate il comando CALL, il comando EXEC, il comando EXECUTE o il comando EXECUTE PROCEDURE per invocare una stored procedure su un host.

I comandi CALL, EXEC, EXECUTE, EXECUTE PROCEDURE sono identici per comportamento, input e output. I diversi comandi garantiscono la compatibilità con i metodi di invocazione di altri linguaggi procedurali. È possibile utilizzare il comando SELECT anche per richiamare una stored procedure.

Sintesi

CALL procedure_name(arguments)
EXEC procedure_name(arguments)
EXECUTE procedure_name(arguments)
EXECUTE PROCEDURE procedure_name(arguments)
SELECT procedure_name(arguments)

Input

I comandi CALL e EXEC[UTE [PROCEDURE] ricevono i seguenti input:
Tabella 1. Ingressi CALL e EXEC[UTE [PROCEDURA]]
Immissione Descrizione
nome_procedura Il nome della stored procedure che si vuole invocare. Se si specifica solo il nome di una procedura, il sistema esegue una ricerca nel database e nello schema corrente, quindi esegue una ricerca nel PATH per trovare la procedura.

È possibile specificare un nome di oggetto completamente qualificato per eseguire una procedura definita in un database o schema diverso.

argomenti Specifica un elenco di argomenti costanti o letterali per la procedura. Gli argomenti possono essere i risultati di funzioni che accettano solo argomenti costanti o letterali.

Output

I comandi CALL e EXEC[UTE [PROCEDURE] hanno le seguenti uscite:

Tabella 2. CALL e EXEC[UTE [PROCEDURA]] producono
Emissione Descrizione
ERRORE: EXECUTE PROC: autorizzazione negata. Questo errore indica che l'account utente corrente non dispone dell'autorizzazione di esecuzione per la stored procedure.
ERRORE: La funzione'NAME(ARGS)' non esiste

Impossibile identificare una funzione che soddisfi i tipi di argomento

Potrebbe essere necessario aggiungere dei typecast espliciti

Questo messaggio indica che l'utente ha inserito argomenti errati per la stored procedure. Una procedura con questo nome esiste, ma si aspetta argomenti di input diversi.

Descrizione

Privilegi richiesti
Per invocare una stored procedure, è necessario soddisfare uno dei seguenti criteri:
  • È necessario disporre del privilegio Execute sull'oggetto PROCEDURE.
  • È necessario disporre del privilegio di esecuzione sulla procedura specifica.
  • La procedura deve essere vostra.
  • È necessario essere l'utente amministratore del database o possedere il database corrente o lo schema corrente nei sistemi che supportano più schemi.

Utilizzo

Gli esempi seguenti forniscono alcuni esempi di utilizzo:
MYDB.MYSCH(USER)=> CALL updateacct();
MYDB.MYSCH(USER)=> EXEC schema_two.myproc();
MYDB.MYSCH(USER)=> EXECUTE sales.dev.inventorysearch(umbrellas);
MYDB.MYSCH(USER)=> EXECUTE PROCEDURE updateacct();
È possibile utilizzare il comando SELECT anche per eseguire una procedura; tuttavia, non è possibile specificare una clausola FROM. Ad esempio:
MYDB.MYSCH(USER)=> SELECT updateacct();
MYDB.MYSCH(USER)=> SELECT inventorysearch(umbrellas);