“prepared-statement”是存储过程吗?从这个链接看来不是。与准备好的语句的比较 从这个链接它似乎是。JDBC介绍
(ctrl+f存储过程查找第二个链接中存储过程相关的位)
在后一个链接中,他们在该官方 oracle 网页中显示的代码示例是准备好的语句,而不是我认为它对应于存储过程的可调用语句。
“prepared-statement”是存储过程吗?从这个链接看来不是。与准备好的语句的比较 从这个链接它似乎是。JDBC介绍
(ctrl+f存储过程查找第二个链接中存储过程相关的位)
在后一个链接中,他们在该官方 oracle 网页中显示的代码示例是准备好的语句,而不是我认为它对应于存储过程的可调用语句。
没错,该教程中引用的代码没有调用存储过程。目的是传达这是一个用 Java 编写的存储过程:
最新一代的数据库产品允许使用 Java 编程语言和 JDBC API 编写存储过程。
以下代码是如何使用 Java 编程语言创建一个非常简单的存储过程的示例。请注意,存储过程只是一个包含普通 JDBC 代码的静态 Java 方法。它接受两个输入参数并使用它们来更改员工的车号。
(强调我的)
例如,Oracle 支持 Java 存储过程,本教程中的示例是如何使用 Java 实现该存储过程。在我看来,这非常令人困惑,因为这不是您从 Java调用存储过程的方式,而且这不应该是这种形式的 JDBC 教程的一部分。
需要说明的是:APreparedStatement
本身不是存储过程,但它可以用来调用(执行)存储过程(同样适用Statement
),aCallableStatement
只是具有更多适合执行存储过程的特性。
在本教程中,Java 存储过程使用 aPreparedStatement
来执行查询,作为该 Java 存储过程执行的一部分。不幸的是,本教程通过讨论这个高级主题而没有讨论执行存储过程的正常任务,从而混淆了这个问题。
PreparedStatement不是存储过程。它可以是任何类型的 SQL 语句。
这样做的好处是,在大多数情况下,此 SQL 语句会立即发送到 DBMS,并在其中进行编译。因此,PreparedStatement 对象不仅包含一条 SQL 语句,还包含一条已预编译的 SQL 语句。这意味着当 PreparedStatement 被执行时,DBMS 可以直接运行 PreparedStatement SQL 语句,而无需先编译它。