Dan*_*anK 15 sql oracle stored-procedures execute call
问题
我正在尝试理解Oracle SQL命令CALL与之间的区别EXECUTE.
我一直在用它CALL来启动存储过程,但在与另一个开发人员交谈时,我发现他几乎只使用了EXECUTE.我在网上做了一些研究,看看我是不是做错了什么但是我没有看到两个命令之间的明显区别,人们似乎可以互换使用它们.
根据文档,它们看起来非常相似(至少在与存储过程交互方面).
它看起来像是CALL一个通用的SQL命令,虽然EXECUTE似乎是专有的,所以我倾向于使用CALL,EXECUTE但后来我不知道这对性能有什么意义.
问题
DKr*_*oot 18
双方EXEC[ute] SP()并CALL SP()可以在SQL*Plus可用于执行SP.顺便说一句,你也可以使用BEGIN SP(); END;
但是有一些不同之处.
CALL是Oracle SQL,应该可以在任何地方使用 可以与Oracle通信的其他数据库客户端可能支持也可能不支持SQL*Plus EXEC.许多人(例如,Oracle SQL Developer,SQLWorkbench/J),但有些人没有(Liquibase).
CALL语句传递的参数的数据类型必须是SQL数据类型.它们不能是PL/SQL专用数据类型,例如BOOLEAN.
EXEC 可以用来执行SP,而不是任意语句.
如果SP没有参数,您可以使用EXEC SP;语法,但CALL需要空括号:CALL SP();