L'istruzione CALL richiama una routine.
La routine chiamata deve essere richiamata in un modo che corrisponde alla relativa definizione. Ad esempio, se una routine è stata definita con tre parametri, i primi due di tipo integer ed il terzo di tipo carattere, l'istruzione CALL deve passare tre variabili alla routine, ciascuno di un tipo di dati che corrisponde alla definizione. Questa funzione è denominata corrispondenza esatta della firma e significa che la firma fornita dall'istruzione CALL deve corrispondere a quella fornita dalla definizione della routine.
La corrispondenza esatta della firma si applica anche ad un valore di ritorno della routine. Se è specificata la clausola RETURNS nell'istruzione CREATE FUNCTION oppure la routine è una funzione integrata, è necessario specificare la clausola INTO nell'istruzione CALL. Un valore di ritorno dalla routine non può essere ignorato. Al contrario, se la clausola RETURNS non è specificata nell'istruzione CREATE FUNCTION, la clausola INTO non deve essere specificata, perché la routine non restituisce alcun valore.
Tale varietà di implementazioni significa che alcune delle clausole nel diagramma di sintassi CALL non sono applicabili (o consentite) per tutti i tipi di routine. Inoltre, consente all'istruzione CALL di richiamare qualsiasi tipo di routine, indipendentemente dal modo in cui la routine è stata definita.
Quando il parametro facoltativo BrokerSchemaName non è specificato, il programma di analisi SQL del broker ricerca la procedura denominata utilizzando l'algoritmo descritto nell'istruzione PATH (consultare la Clausola PATH dell'istruzione BROKER SCHEMA).
Quando il parametro BrokerSchemaName è specificato, il programma di analisi SQL del broker richiama la procedura denominata nello schema specificato senza ricercare prima il percorso. Tuttavia, se un riferimento della procedura è ambiguo (esistono due procedure con lo stesso nome in schemi broker differenti) ed il riferimento non è qualificato dal parametro facoltativo BrokerSchemaName, gli strumenti Eclipse generano un "errore di visualizzazione delle attività" che è necessario correggere per distribuire il codice ambiguo.
Le funzioni integrate fornite dal broker vengono posizionate automaticamente in uno schema broker predefinito chiamato SQL. Nello schema SQL viene sempre eseguita una ricerca di una routine non associata ad una routine definita dall'utente. Quindi, un modulo definito dall'utente ha precedenza rispetto ad una routine integrata con lo stesso nome.
Ciascuno schema broker fornisce uno spazio dei nomi o un simbolo univoco per una routine, per cui un nome di routine è univoco quando è qualificato dal nome dello schema a cui appartiene.
CALL myProc1() INTO cursor; CALL myProc1() INTO OutputRoot.XML.TestValue1;
L'istruzione CALL passa i parametri nella procedura nell'ordine fornito. I parametri definiti come IN o INOUT nella definizione della routine vengono valutati prima che venga eseguita l'istruzione CALL, ma i parametri definiti come OUT vengono sempre passati come parametri NULL del tipo corretto. Una volta completata la procedura, i parametri dichiarati come OUT o INOUT vengono aggiornati in modo da riflettere le modifiche apportate ad essi durante l'esecuzione della procedura. I parametri definiti come IN non vengono mai modificati durante l'esecuzione della procedura.
Il sovraccarico della routine non è supportato. Ciò significa che non è possibile creare due routine con lo stesso nome nello stesso schema broker. Se il broker rileva che una routine è stata sovraccaricata, genera un'eccezione. Allo stesso modo, non è possibile richiamare una procedura memorizzata del database che è stata sovraccaricata. Una procedura memorizzata del database è sovraccaricata se esiste un'altra procedura con lo stesso nome nello stesso schema del database. Tuttavia, è possibile richiamare un metodo Java sovraccaricato, se si crea una definizione ESQL separata per ciascun metodo sovraccaricato che si desidera richiamare e fornire a ciascuna definizione ESQL un nome di routine univoco.