DBMS 是否以 DBMS 服务器上的存储过程的形式保存来自准备语句的编译查询?

Does the DBMS save the compiled queries from prepared statements, in the form of stored procedures on the DBMS server?

DBMS是否以存储过程的形式将prepared statements的编译查询保存在JDBC中?数据库服务器?我认为准备好的语句不是 DBMS 中的概念,而是 JDBC 中的概念,所以我想知道它是如何在 DBMS 服务器端实现的。

我的问题来自

我阅读了 DIfference Between Stored Procedures and Prepared Statements..?,但没有找到我的答案。

谢谢。

我对 PostgreSQL、MySQL 或 SQL 服务器感兴趣。

不,准备好的语句在任何 RDBMS 中都没有作为存储过程实现。

Prepared statements是在服务器端解析保存的,所以可以多次执行不同的参数值,但不是以存储过程的形式保存。它们以某种依赖于实现的方式保存。例如,作为某种内存对象,完全在数据库服务器的代码内部。这些不能像存储过程那样调用。


回复您的评论:

以 MySQL 为例。

MySQL 在早期不支持准备语句,所以 MySQL JDBC 驱动程序有一个选项 "emulate" 准备语句。模拟模式的想法是,当您创建 PreparedStatement 时,SQL 查询字符串保存在 JDBC 客户端中。 SQL 尚未发送到数据库服务器。然后,当您绑定参数并调用 execute() 时,它将参数值复制到 SQL 查询中并发送最终结果。

不知道其他品牌的JDBC驱动是否有类似的功能