- A.4.1. MySQL 8.3是否支持存储过程和函数?
- A.4.2. 在哪里可以找到MySQL存储过程和存储函数的文档?
- A.4.3. 是否有一个讨论论坛用于MySQL存储过程?
- A.4.4. 在哪里可以找到ANSI SQL 2003规范的存储过程?
- A.4.5. 如何管理存储例程?
- A.4.6. 是否有办法查看给定数据库中的所有存储过程和存储函数?
- A.4.7. 存储过程存储在哪里?
- A.4.8. 是否可以将存储过程或存储函数分组到包中?
- A.4.9. 一个存储过程可以调用另一个存储过程吗?
- A.4.10. 一个存储过程可以调用触发器吗?
- A.4.11. 一个存储过程可以访问表吗?
- A.4.12. 存储过程是否有语句来引发应用程序错误?
- A.4.13. 存储过程提供异常处理吗?
- A.4.14. MySQL 8.3存储例程可以返回结果集吗?
- A.4.15. 是否支持WITH RECOMPILE用于存储过程?
- A.4.16. 是否有一个MySQL等效于使用mod_plsql作为Apache网关来直接与数据库中的存储过程通信?
- A.4.17. 我可以将数组作为输入传递给存储过程吗?
- A.4.18. 我可以将游标作为IN参数传递给存储过程吗?
- A.4.19. 我可以将游标作为OUT参数从存储过程返回吗?
- A.4.20. 我可以在存储例程中打印变量的值以进行调试吗?
- A.4.21. 我可以在存储过程中提交或回滚事务吗?
- A.4.22. MySQL 8.3存储过程和函数是否与复制一起工作?
- A.4.23. 在复制源服务器上创建的存储过程和函数是否被复制到副本?
- A.4.24. 存储过程和函数中的操作如何被复制?
- A.4.25. 使用存储过程和函数与复制一起工作是否需要特殊的安全要求?
- A.4.26. 存储过程和函数的复制存在哪些限制?
- A.4.27. 这些限制是否影响了MySQL的点时间恢复能力?
- A.4.28. 上述限制何时被解决?
A.4.1. |
MySQL 8.3 是否支持存储过程和函数? |
是的。MySQL 8.3 支持两种类型的存储例程,存储过程和存储函数。 |
|
A.4.2. |
哪里可以找到 MySQL 存储过程和存储函数的文档? |
请参阅 第 27.2 节,“使用存储例程”。 |
|
A.4.3. |
是否有一个讨论论坛用于 MySQL 存储过程? |
A.4.4. |
哪里可以找到 ANSI SQL 2003 规范的存储过程? |
不幸的是,官方规范不可免费获取(ANSI 将其出售)。然而,有些书籍,如 Peter Gulutzan 和 Trudy Pelzer 的《SQL-99 Complete, Really》,提供了对标准的综合概述,包括存储过程的 coverage。 |
|
A.4.5. |
如何管理存储例程? |
总是使用明确的命名方案来管理存储例程。您可以使用 |
|
A.4.6. |
是否可以查看给定数据库中的所有存储过程和存储函数? |
是的。对于名为
更多信息,请参阅 第 28.3.30 节,“The INFORMATION_SCHEMA ROUTINES Table”。 存储例程的主体可以使用 |
|
A.4.7. |
存储过程存储在哪里? |
A.4.1. |
MySQL 8.3 是否支持存储过程和函数? |
是的。MySQL 8.3 支持两种类型的存储例程,存储过程和存储函数。 |
|
A.4.2. |
哪里可以找到 MySQL 存储过程和存储函数的文档? |
请参阅 第 27.2 节,“使用存储例程”。 |
|
A.4.3. |
是否有一个讨论论坛用于 MySQL 存储过程? |
A.4.4. |
哪里可以找到 ANSI SQL 2003 规范的存储过程? |
不幸的是,官方规范不可免费获取(ANSI 将其出售)。然而,有些书籍,如 Peter Gulutzan 和 Trudy Pelzer 的《SQL-99 Complete, Really》,提供了对标准的综合概述,包括存储过程的 coverage。 |
|
A.4.5. |
如何管理存储例程? |
总是使用明确的命名方案来管理存储例程。您可以使用 |
|
A.4.6. |
是否可以查看给定数据库中的所有存储过程和存储函数? |
是的。对于名为
更多信息,请参阅 第 28.3.30 节,“The INFORMATION_SCHEMA ROUTINES Table”。 存储例程的主体可以使用 |
|
A.4.7. |
存储过程存储在哪里? |
A.4.1. |
MySQL 8.3 是否支持存储过程和函数? |
是的。MySQL 8.3 支持两种类型的存储例程,存储过程和存储函数。 |
|
A.4.2. |
哪里可以找到 MySQL 存储过程和存储函数的文档? |
请参阅 第 27.2 节,“使用存储例程”。 |
|
A.4.3. |
是否有一个讨论论坛用于 MySQL 存储过程? |
A.4.4. |
哪里可以找到 ANSI SQL 2003 规范的存储过程? |
不幸的是,官方规范不可免费获取(ANSI 将其出售)。然而,有些书籍,如 Peter Gulutzan 和 Trudy Pelzer 的《SQL-99 Complete, Really》,提供了对标准的综合概述,包括存储过程的 coverage。 |
|
A.4.5. |
如何管理存储例程? |
总是使用明确的命名方案来管理存储例程。您可以使用 |
|
A.4.6. |
是否可以查看给定数据库中的所有存储过程和存储函数? |
是的。对于名为
更多信息,请参阅 第 28.3.30 节,“The INFORMATION_SCHEMA ROUTINES Table”。 存储例程的主体可以使用 |
|
A.4.7. |
存储过程存储在哪里? |
存储过程存储在 您也可以使用 |
|
A.4.8. |
是否可以将存储过程或存储函数分组到包中? |
不,MySQL 8.3 不支持这种功能。 |
|
A.4.9. |
存储过程可以调用另一个存储过程吗? |
是的。 |
|
A.4.10. |
存储过程可以调用触发器吗? |
存储过程可以执行 SQL 语句,例如 |
|
A.4.11. |
存储过程可以访问表吗? |
是的。存储过程可以根据需要访问一个或多个表。 |
|
A.4.12. |
存储过程是否有语句来引发应用程序错误? |
是的。MySQL 8.3 实现了 SQL 标准 |
|
A.4.13. |
存储过程是否提供异常处理? |
MySQL 实现了 |
|
A.4.14. |
MySQL 8.3 存储例程是否可以返回结果集? |
存储过程 可以,但存储函数不能。如果您在存储过程中执行普通的 |
|
A.4.15. |
是否支持 |
在 MySQL 8.3 中不可用。 |
|
A.4.16. |
是否有 MySQL 等同于使用 |
在 MySQL 8.3 中没有等效项。 |
|
A.4.17. |
是否可以将数组作为输入传递给存储过程? |
在 MySQL 8.3 中不可用。 |
|
A.4.18. |
是否可以将游标作为 |
在 MySQL 8.3 中,游标仅在存储过程内部可用。 |
|
A.4.19. |
是否可以将游标作为 |
在 MySQL 8.3 中,游标仅在存储过程内部可用。然而,如果您不打开游标来执行 |
|
A.4.20. |
是否可以在存储过程中打印变量的值以进行调试? |
是的,您可以在 存储过程 中这样做,但不能在存储函数中这样做。如果您在存储过程中执行普通的 |
|
A.4.21. |
是否可以在存储过程中提交或回滚事务? |
是的。但是,您不能在存储函数中执行事务操作。 |
|
A.4.22. |
MySQL 8.3 存储过程和函数是否与复制兼容? |
是的,标准操作在存储过程和函数中执行的操作将从复制源服务器复制到副本。有一些限制,详见 第 27.7 节,“存储程序二进制日志记录”。 |
|
A.4.23. |
存储过程和函数是否在复制源服务器上创建并复制到副本? |
是的,在复制源服务器上通过普通 DDL 语句创建的存储过程和函数将被复制到副本,以便在两个服务器上都存在这些对象。 |
|
A.4.24. |
存储过程和函数中的操作如何被复制? |
MySQL 记录了存储过程中的每个 DML 事件,并将这些事件复制到副本。实际执行存储过程的调用不会被复制。 更改数据的存储函数将被记录为函数调用,而不是作为 DML 事件。 |
|
A.4.25. |
使用存储过程和函数与复制一起时,是否有特殊的安全要求? |
是的。因为副本有权执行来自源的二进制日志中的任何语句,因此在使用存储函数与复制时存在特殊的安全约束。如果启用了复制或二进制日志记录(用于点时间恢复),那么 MySQL DBA 有两个安全选项可供选择:
|
|
A.4.26. |
存储过程和函数操作的复制存在哪些限制? |
嵌入存储过程中的非确定性(随机)或基于时间的操作不能正确地复制。由于随机产生的结果不可预测,因此无法在副本上精确地重现随机操作。声明存储函数为 此外,基于时间的操作也不能在副本上重现,因为存储过程中的时间约束无法通过二进制日志记录来复制。 最后,对于非事务表,如果大型 DML 操作(如批量插入)出现错误,可能会出现复制问题。在这种情况下,源可能会部分更新,而副本不会更新,因为错误会导致更新失败。解决方法是使用 |
|
A.4.27. |
这些限制是否会影响 MySQL 的点时间恢复能力? |
这些限制同样会影响点时间恢复。 |
|
A.4.28. |
这些限制何时会被解决? |
您可以选择基于语句的复制或基于行的复制。原始的复制实现基于基于语句的二进制日志记录。基于行的二进制日志记录解决了前面提到的限制。 混合 复制也可用(通过使用 有关更多信息,请参阅 第 19.2.1 节,“复制格式”。 |
|
这些限制同样会影响点时间恢复。 |
|
A.4.28. |
这些限制何时会被解决? |
您可以选择基于语句的复制或基于行的复制。原始的复制实现基于基于语句的二进制日志记录。基于行的二进制日志记录解决了前面提到的限制。 混合 复制也可用(通过使用 有关更多信息,请参阅 第 19.2.1 节,“复制格式”。 |
|
这些限制同样会影响点时间恢复。 |
|
A.4.28. |
这些限制何时会被解决呢? |
您可以选择基于语句的复制或基于行的复制。原始的复制实现基于基于语句的二进制日志记录。基于行的二进制日志记录解决了前面提到的限制。 混合 复制也可用(通过使用 有关更多信息,请参阅 第 19.2.1 节,“复制格式”。 |