Проблема
Я пытаюсь понять разницу между командами Oracle SQL CALL
и EXECUTE
.
Я использовал CALL
для запуска хранимых процедур, но, разговаривая с другим разработчиком, я обнаружил, что он почти исключительно использует EXECUTE
. Я провел некоторое исследование в Интернете, чтобы узнать, не сделал ли я что-то неправильно, но я не вижу четкого различия между этими двумя командами, и люди, похоже, используют их взаимозаменяемо.
Основываясь на документации, они кажутся очень похожими (по крайней мере, с точки зрения взаимодействия с хранимыми процедурами).
- http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4008.htm
- http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12022.htm
- http://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_app_dbms_aw026.htm
Похоже, что CALL
- это универсальная команда SQL, а EXECUTE
, по-видимому, является запатентованной, поэтому я бы склонен использовать CALL
over EXECUTE
, но опять же я не знаю, что это значит в отношении к производительности.
Вопросы
- Является предпочтительным для других с точки зрения запуска хранимой процедуры? Это имеет значение?
- Если это имеет значение, что такое ситуация, когда это подходит?
- Существуют ли различия в производительности между этими двумя? Какая передовая практика?