Both EXEC[ute] SP()
and CALL SP()
could be used in SQL*Plus to execute an SP. BTW, you can also use BEGIN SP(); END;
But there are some differences.
CALL
is Oracle SQL and should work everywhere. Other DB clients that can talk to Oracle may or may not support SQL*Plus EXEC. Many do (for example, Oracle SQL Developer, SQLWorkbench/J), but some don't (Liquibase).The data types of the parameters passed by the
CALL
statement must be SQL data types. They cannot be PL/SQL-only data types such as BOOLEAN.EXEC
could be used to execute not only an SP, but an arbitrary statement.If an SP does not have parameters, you can use
EXEC SP;
syntax, butCALL
requires empty parentheses:CALL SP();