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
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:
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
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();
MYDB.MYSCH(USER)=> SELECT updateacct();
MYDB.MYSCH(USER)=> SELECT inventorysearch(umbrellas);