gpt4 book ai didi

sql - Oracle SQL 存储过程调用与执行

转载 作者:行者123 更新时间:2023-12-02 18:19:15 26 4
gpt4 key购买 nike

问题

我试图了解 Oracle SQL 命令 CALLEXECUTE 之间的区别。

我一直使用CALL来启动存储过程,但在与另一位开发人员交谈时,我发现他几乎只使用EXECUTE。我在网上做了一些研究,看看我是否做错了什么,但我没有看到这两个命令之间的明显区别,而且人们似乎可以互换使用它们。

根据文档,它们看起来非常相似(至少在与存储过程交互方面)。

看起来CALL确实是一个通用的SQL命令,而EXECUTE似乎是专有的,所以我倾向于使用CALL而不是EXECUTE 但话又说回来,我不知道这对性能意味着什么。

问题

  • 在启动存储过程方面,其中一个比另一个更好吗?这重要吗?
  • 如果确实重要,什么情况下两者都合适?
  • 两者之间有性能差异吗?最佳实践是什么?

最佳答案

两者EXEC[ute] SP()CALL SP()可以在 SQL*Plus 中使用来执行 SP。顺便说一句,您还可以使用 BEGIN SP(); END;

但还是有一些区别。

  1. CALL是 Oracle SQL,应该可以在任何地方使用。其他可以与 Oracle 通信的数据库客户端可能支持也可能不支持 SQL*Plus EXEC。许多都这样做(例如,Oracle SQL Developer、SQLWorkbench/J),但有些则不这样做(Liquibase)。

  2. CALL传递的参数的数据类型语句必须是SQL数据类型。它们不能是仅 PL/SQL 的数据类型,例如 BOOLEAN。

  3. EXEC不仅可以用来执行 SP,还可以用来执行任意语句。

  4. 如果 SP 没有参数,可以使用 EXEC SP;语法,但是 CALL需要空括号:CALL SP();

关于sql - Oracle SQL 存储过程调用与执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20571647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com